如何比较节点js中的两个数组? [英] How to compare two arrays in node js?
本文介绍了如何比较节点js中的两个数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有两个数组,如何在单次比较中比较两个数组。
I am having two arrays, how can i compare the two arrays at single shot.
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);
}
边缘情况的附注:
Side note for edge cases:
===
通常被视为此类任务略有损坏,因为 NaN
意外行为:
===
is often considered slightly broken for this kind of task because NaN
behaves unexpectedly:
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,这可以很容易地实现:
The code above actually logs false
because NaN !== NaN
. In addition, ===
can't distinguish +0
from -0
. To cover both of these cases, you could use a stronger comparison known as "egal" or "is", which can easily be implemented like so:
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);
}
这篇关于如何比较节点js中的两个数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文