在Javascript中比较相同的数组

时间:2015-06-09 07:17:13

标签: javascript arrays

我有两个相同的数组,我想看看它是否等于并返回true

var a = [1,2];

var b = [1,2];

if(a === b){ 返回true }

这两个阵列显然是相同的,但我变得不平等。有人可以解释为什么以及是否有一种比较两者的简单方法?

4 个答案:

答案 0 :(得分:1)

问题是您要创建两个不同的数组,并===检查ab是否具有相同的引用。因此你的病情失败了。没有用于比较数组的内置代码,但是有相同的库。但是你只需编写一个函数来通过循环来比较数组。

答案 1 :(得分:1)

1。不要使用==运营商

它没有做你的想法,而且非常接近完全没用(例如"1" == [[1]])。请改为===。如果双方=====的类型相同,请执行相同操作,但如果他们不是==进行疯狂转换,您将会后悔。

2。数组===检查身份

即。只有当双方是完全相同的对象时,它才会返回true,而不是具有相同内容的对象(无论是相同的'是什么意思)。

如果要查看内容,首先应确定如何比较元素...例如

my_eqtest([1, [2, 3]], [1, [2, 3]])

应该返回truefalse

x = [1, 2]
y = [1, 2]
y.myextramember = "foo"

my_eqtest(x, y) // should be true or false?

如果不是对象身份,你应该描述(记录)你对平等意味着什么,否则谁读取代码将无法理解为什么某些东西不起作用(包括你自己在几周内)。

答案 2 :(得分:0)

最简单的方法是使用像lodash _.difference

这样的实用程序库

答案 3 :(得分:0)

试试这个:

function arraysEqual(arr1, arr2) {
    if(arr1.length !== arr2.length)
        return false;
    for(var i = arr1.length; i--;) {
        if(arr1[i] !== arr2[i])
            return false;
    }
    return true;
}