现在,我可以通过搜索音符的频率来找到音符列表的对象键:
let key = noteKeys.find(k=>note[k]['freq']===freq);
每个音符都有自己独特的频率,因此这是一个问题。
但是要说我是否要基于笔记字母值(一个数字)和一个八度来在笔记对象中找到对象键?
我以为会是这样,但这给了我错误“参数列表格式错误”:
let key = noteKeys.find(k=>note[k]['note']===newNote && k=>note[k]['octave']===currentOctave)
答案 0 :(得分:2)
=>
是将参数与arrow functions的功能主体分开的部分。
由于错误的参数列表,在表达式内部会引发错误。
let key = noteKeys.find(k =>
note[k]['note'] === newNote && note[k]['octave'] === currentOctave
);
短一点
let key = noteKeys.find(k =>
note[k].note === newNote && note[k].octave === currentOctave
);
答案 1 :(得分:1)
=>
之后的所有内容都是函数主体,在这种情况下(由于没有大括号表示一个块)也是该函数的返回表达式。
通过执行&& k=> ...
,您正在创建一个新的匿名函数,其布尔表达式中的真实性始终为真。
删除第二个k =>
,您将拥有一个布尔表达式,该布尔表达式同时声明note[k]['note']===newNote
和note[k]['octave']===currentOctave
:
let key = noteKeys.find(k=>note[k]['note']===newNote && note[k]['octave']===currentOctave)
或者,或者更容易理解:
let key = noteKeys.find(k=> {
return note[k]['note'] === newNote && note[k]['octave'] === currentOctave)
})
作为后续,您应该阅读箭头功能和布尔表达式。