javascript - 将对象转换为另一个对象
问题描述
我有一个这个签名的对象数组:
Note {
_payload: [Object],
blockText: 'ti',
measure: [Measure],
entries: [Array],
start: 500,
voiceId: undefined,
octaveModifier: 0,
previousNote: [Note],
firstNoteOfPreviousBlock: [Chord],
isTied: undefined,
currentSubgroup: undefined,
userInput: 'do refala misoti fa',
crescendoIndex: undefined,
chord: [Chord],
_duration: 250
}
API 中有一些 getter 函数,允许我访问特定的对象属性,例如:(
block.elapsedTime
这是“时间”值)和${note.alpha}${note.octave}
,这是(“注释”值)。
最终,我试图遍历对象列表,以便我可以以这种格式返回带有时间和注释值的对象:
[
{time: 0, note: 'C4', velocity: 0.7 },
{time: 250, note: 'D4', velocity: 0.7}
{time: 250, note: 'F4', velocity: 0.7}
{time: 250, note: 'A4', velocity: 0.7}
{time: 500, note: 'E4', velocity: 0.7}
{time: 500, note: 'G4', velocity: 0.7}
{time: 500, note: 'B4', velocity: 0.7}
{time: 750, note: 'F4', velocity: 0.7}
]
我试过用这种方式使用地图:
block.entries.map(note => [block.elapsedTime, `${note.alpha}${note.octave}`])
但这会返回数组而不是对象。
非常感谢,纳库尔
解决方案
Array.prototype.map()返回从回调函数返回的元素数组。在您的情况下,它是一个数组:
[block.elapsedTime, `${note.alpha}${note.octave}`]
您应该返回一个对象而不是这样的数组:
block.entries.map((note) => ({
time: block.elapsedTime,
note: `${note.alpha}${note.octave}`
})
);
您可以在对象内添加任何必填字段。
推荐阅读
- moodle - R/exams Moodle 选择题不计分
- azure - 搜索 Azure Runbook 作业的“输入”?
- python - 根据另一个数组中的值从一个数组创建多个数组 - python
- octave - 八度函数
- reactjs - 反应引导打开所有崩溃
- rest - 使用 JWT access_token 和刷新令牌方法保护 REST API
- c - 如何在c中使用fread和fwrite
- macos - 如何正确地将 MacOS 签名和公证添加到使用 Qt 构建的 .app
- c# - 找不到无参数构造函数
- python-3.x - tensorflow seq2seq 模型输出相同的输出