看看这个代码示例 or go to the jsfiddle
function printRelation(a, b, out) {
var text;
if (a === b) {
text = "a === b";
} else if (a == b) {
text = "a == b";
} else {
text = "a != b";
}
$('#' + out).text(text);
}
var a = [0, 0, 2], b = a;
printRelation(a, b, 'out1');
a = [0, 0, 2];
b = [0, 0, 2];
printRelation(a, b, 'out2');
我本来希望两个测试都输出
a === b
,但只有第一个输出。第二个输出 a != b
。谁能解释这种行为?如何有效地比较javascript中的数组? 最佳答案
像您编写的 JavaScript 数组比较只是简单的对象引用比较。它们不是逐个元素的“深度”比较。
您可以编写自己的比较函数,以检查长度是否相同以及元素是否相同,无论是否按顺序,都适合您的需要。编辑正如其他人指出的那样,有几个库包含数组比较函数。如果您发现一个符合您对“平等”的定义(并非不可能),并且您不介意考虑将该库合并到您的架构中,那么这可能是一个好主意。
关于javascript - 如何在javascript中检查数组是否相等?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12770373/