【发布时间】:2021-08-14 08:56:18
【问题描述】:
我有一个这个签名的对象数组:
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}`])
但这会返回数组而不是对象。
非常感谢, 纳库尔
【问题讨论】:
-
velocity是一个常数值(0.7)吗?你会从previousNote' field? How is the structure ofblock`对象中得到note.alpha吗?是不是像{block : elapsedTime, note:{alpha:1,octave:1}? -
如果所有对象都具有相同的
block.elapsedTime值,为什么它们的输出不同?note中没有alpha和octave属性 -
@RajdeepDebnath,note 类扩展了 block 类。 .alpha 是一个实例 getter 方法,它在块级别从较低的位置检索数据。它的有效载荷比我打印的还要丰富。
-
@adiga,我的意思是上面列出的有效负载描述了对象的签名,而不是对象数组。对象数组中的每个对象都有不同的经过时间值。
-
@NakulTiruviluamala 所以
note类扩展block类,那么注释对象将具有elapsedTime属性。所以返回的对象可以是{time: note.elapsedTime, note: '${}${}'}
标签: javascript object type-conversion