フィルター、要素、それは第二で一部要素と一致しない場合:
parentArray1.filter(elt1 => !parentArray2.some(elt2 => elt2.id === elt1.id))
をここでは、ライン・バイ・ラインであるが形式コメント:
parentArray1 // From parentArray1
.filter( // keep all the
elt1 => // elements for which
! // it is not the case that
parentArray2 // parentArray2
.some( // has some
elt2 => // elements for which
elt2.id // the id
=== // is equal to
elt1.id)) // the id of the first element.
あなたのための構造化代入ES6のビット:
矢印機能なしES5で
parentArray1.filter(({id1}) => !parentArray2.some(({id2}) => id1 === id2))
、:
parentArray.filter(function(elt1) {
return !parentArray2.some(function(elt2) {
return elt2.id === elt1.id;
});
})
あなたはforループでこれを行うにしたい場合:
result = [];
for (var i = 0; i < parentArray1.length; i++) {
var include = true;
for (var j = 0; j < parentArray2.length; j++) {
if (parentArray1[i].id === parentArray2[j].id) include = false;
}
if (include) result.push(parentArray1[i]);
}
あなたはまた、削除するIDのリストを事前に計算を検討する必要があります:
var removeIds = parentArray2.map(elt => elt.id);
今、あなたはフィルタリングすることができparentArray1
より簡単に:
parentArray1.filter(elt => !removeIds.contains(elt.id))
あなたはあなたの例の配列をフォーマットすることはできますか?今は配列がありませんし、これを正しくコード化するのは難しいです。 –
parentArray1とparentArray2のタイプは何ですか?オブジェクトまたは配列 – Kenny