2つの別々の配列のユニークな要素だけを含む新しい配列を返すコードを記述しました。例:[1,2,3]と[1,2]は3を返します。私は作業コードを持っていますが、なぜ '!'javascript .filter()でユニークな要素の新しい配列を返します
function diffArray(arr1, arr2) {
return arr1.concat(arr2).filter(function(val){
return !(arr1.indexOf(val) >= 0 && arr2.indexOf(val) >= 0)
});
}
diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]);
が、これにはない:私のreturn文の前に
function diffArray(arr1, arr2) {
return arr1.concat(arr2).filter(function(val){
return arr1.indexOf(val) < 0 && arr2.indexOf(val) < 0
});
}
diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]);
私は印象の下にありました '!'式を反転させるだけなので、除外し、 '> ='ではなく '<'を使用すると同じ値が返されます。 De Morgan's lawsによれば
は何を考えてみて'&&'演算子はどうなりますか?あなたは適用を認識します!あなたの表現の向こう側は比較を変えますが、ANDをそのまま残します。 – pvg