看看这个代码示例 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/

10-16 20:50