亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

針對另一個對象數組過濾對象數組。刪除數組值與另一個對象數組中的值匹配的項

針對另一個對象數組過濾對象數組。刪除數組值與另一個對象數組中的值匹配的項

慕萊塢森 2022-10-27 14:07:05
我過去曾.filter成功使用過,但我無法弄清楚這個用例。我想返回數組的克隆chordLibrary(大概使用.filter)。但我想從這個新數組中刪除任何項目/對象,其中屬性名稱的任何數組值notesInChord恰好匹配badNotes.keyIndex.為了澄清起見,我將比較 inchordLibrary中的每個項目badNotes和 in 中的每個項目,chordLibrary如果它的數組值與badNotes.在以下示例中,您可以看到 in 中的第一項chordLibrary包含數組 value 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 解決方案還可以。
查看完整描述

1 回答

?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

在filter您可以使用自定義方法搜索notesInChord是否在 badNotes 中找到它們find,如下所示:


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"}

];


function getGoodNotes(chordList){

     return chordList.filter((chord)=>{

          if(!containsBadNote(chord.notesInChord))

               return chord;

     });

}

function containsBadNote(notesInChord){

     for(let i = 0; i < notesInChord.length; i++){

          var note = notesInChord[i];

          if(badNotes.find((n)=> n.keyIndex[0]==note)!=null)

               return true;

     }

     return false;

}


console.log( getGoodNotes(chordLibrary) );


查看完整回答
反對 回復 2022-10-27
  • 1 回答
  • 0 關注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號