【发布时间】:2020-07-02 19:04:30
【问题描述】:
我过去成功使用过.filter,但我无法弄清楚这个用例。
我想返回数组chordLibrary 的克隆(大概使用.filter)。但我想从这个新数组中删除任何项目/对象,其中属性名称 notesInChord 的任何数组值恰好匹配 badNotes.keyIndex 的任何数组值。
为了澄清,我会将chordLibrary 中的每个项目与badNotes 中的每个项目进行比较,并从chordLibrary 中删除一个项目,如果它的数组值匹配badNotes 中任何项目中的任何数组值.
在以下示例中,您可以看到chordLibrary 中的第一项包含数组值5,因此该项目在结果中被删除。
const chordLibrary = [
{ notesInChord: [5, 8], chordName: 'Major' },
{ notesInChord: [4, 8], chordName: 'Minor' },
{ notesInChord: [8], chordName: '5' }
];
const badNotes = [
{"keyIndex":[1],"keyName":"C#"},
{"keyIndex":[3],"keyName":"D#"},
{"keyIndex":[5],"keyName":"E"}
];
// example result: "
const newChordLibrary = [
{ notesInChord: [4, 8], chordName: 'Minor' },
{ notesInChord: [8], chordName: '5' }
];
我假设我需要嵌套或使用 for 循环或 forEach 来执行此操作,但我无法弄清楚。
ES6 解决方案还可以。
谢谢!
【问题讨论】:
标签: javascript arrays object filter foreach