2 つのアレイを使用していますが、2 つのアレイを一度に比較するにはどうすればよいですか。
var arr1= ["a","b","c"];
var arr2 = ["a","c","d"]
if(arr1 == arr2){
console.log(true);
}else{
console.log(false);
}
2 つのアレイを使用していますが、2 つのアレイを一度に比較するにはどうすればよいですか。
var arr1= ["a","b","c"];
var arr2 = ["a","c","d"]
if(arr1 == arr2){
console.log(true);
}else{
console.log(false);
}
var arr1 = ["a","b","c"];
var arr2 = ["a","c","d"];
if (arr1.length == arr2.length
&& arr1.every(function(u, i) {
return u === arr2[i];
})
) {
console.log(true);
} else {
console.log(false);
}
エッジケースの補足事項:
===
NaN
予期しない動作をするため、この種のタスクでは少し壊れていると見なされることがよくあります。
var arr1 = ["a",NaN,"b"];
var arr2 = ["a",NaN,"b"];
if (arr1.length == arr2.length
&& arr1.every(function(u, i) {
return u === arr2[i];
})
) {
console.log(true);
} else {
console.log(false);
}
上記のコードはfalse
、NaN !== NaN
. また、===
と区別がつきませ+0
ん-0
。これらの両方のケースをカバーするには、「egal」または「is」として知られるより強力な比較を使用できます。これは次のように簡単に実装できます。
function is(a, b) {
return a === b && (a !== 0 || 1 / a === 1 / b) // false for +0 vs -0
|| a !== a && b !== b; // true for NaN vs NaN
}
var arr1 = ["a",NaN,"b"];
var arr2 = ["a",NaN,"b"];
if (arr1.length == arr2.length
&& arr1.every(function(u, i) {
// Use "is" instead of "==="
return is(u, arr2[i]);
})
) {
console.log(true);
} else {
console.log(false);
}
これにはアンダースコアを使用します。
var same = (_.difference(arr1, arr2).length == 0)
ES5 なしの別のものを次に示しevery
ます。
function arrEq(arr1, arr2) {
for (var i = 0; i < arr1.length; i++)
if (arr1[i] != arr2[i])
return false;
return i == arr2.length;
}