我有一个这个签名的对象数组:
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}`])
但这返回数组而不是对象。
非常感谢, 纳库尔
答案 0 :(得分:1)
Array.prototype.map() 返回从回调函数返回的元素数组。在您的情况下,它是一个数组:
[block.elapsedTime, `${note.alpha}${note.octave}`]
你应该返回一个对象而不是这样的数组:
block.entries.map((note) => ({
time: block.elapsedTime,
note: `${note.alpha}${note.octave}`
})
);
您可以在对象内添加任何必填字段。