2 回答

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個贊
forEach忽略其回調(diào)返回的任何值。請改用for循環(huán),以便return返回到 的調(diào)用者isValidNote,而不是被 忽略forEach:
const chromatic = ["A", "A#/Bb", "B/Cb", "B#/C", "C#/Db", "D", "D#/Eb", "E", "E#/Fb", "F", "F#/Gb", "G", "G#/Ab" ];
const isValidNote = (note)=> {
for (const item of chromatic) {
if(item.split("/").length > 1){
if(item.split("/")[0] == note) return true;
if(item.split("/")[1] == note) return true;
}
else if(item == note){
return true;
}
}
return false;
}
console.log(isValidNote("C"));
或者,更簡潔地說:
const chromatic = ["A", "A#/Bb", "B/Cb", "B#/C", "C#/Db", "D", "D#/Eb", "E", "E#/Fb", "F", "F#/Gb", "G", "G#/Ab" ];
const isValidNote = (note)=> {
for (const item of chromatic) {
const allNotes = item.split("/");
if (allNotes.includes(note)) {
return true;
}
}
return false;
}
console.log(isValidNote("C"));
或者與.some:
const chromatic = ["A", "A#/Bb", "B/Cb", "B#/C", "C#/Db", "D", "D#/Eb", "E", "E#/Fb", "F", "F#/Gb", "G", "G#/Ab" ];
const isValidNote = note => chromatic.some(
item => item.split("/").includes(note)
);
console.log(isValidNote("C"));

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個贊
從forEach()回調(diào)返回只是繼續(xù)循環(huán),它不會從isValidNote()函數(shù)返回。
使用some()而不是forEach(). 如果任何回調(diào)返回 true,則它返回 true。
您還可以使用 來簡化回調(diào)內(nèi)的條件includes()。
const chromatic = ["A", "A#/Bb", "B/Cb", "B#/C", "C#/Db", "D", "D#/Eb", "E", "E#/Fb", "F", "F#/Gb", "G", "G#/Ab"];
const isValidNote = note => chromatic.some(item => item.split("/").includes(note));
console.log(isValidNote("C"));
添加回答
舉報