比较Javascript中相同的数组

比较Javascript中相同的数组,javascript,arrays,Javascript,Arrays,我有两个相同的数组,我想看看它是否等于并返回true var a=[1,2] var b=[1,2] 如果(a==b){ 返回真值 } 这两个数组显然是相同的,但我得到的不是相等的。有人能解释一下为什么以及是否有一种简单的方法来比较两者吗?最简单的方法是使用像lodash这样的实用程序库,试试以下方法: function arraysEqual(arr1, arr2) { if(arr1.length !== arr2.length) return false;

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

var a=[1,2]

var b=[1,2]

如果(a==b){ 返回真值 }


这两个数组显然是相同的,但我得到的不是相等的。有人能解释一下为什么以及是否有一种简单的方法来比较两者吗?

最简单的方法是使用像lodash这样的实用程序库,试试以下方法:

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;
}

问题是您正在创建两个不同的数组,
==
检查
a
b
是否具有相同的引用。因此,您的条件失败。没有用于比较数组的内置代码,但是有用于相同数组的库。但您只需编写一个函数,通过循环比较数组。

1。永远不要使用
==
运算符 它不会做你想做的事情,而且几乎完全没有用处(例如
“1”=[[1]]
)。宁愿选择
==
。如果两边的类型都相同,则执行相同的操作,但如果不是,则执行疯狂的转换,您会后悔

2. <代码>=用于阵列检查标识 也就是说,只有当双方是完全相同的对象,而不是具有相同内容的对象(无论“相同”是什么意思)时,它才会返回
true

如果要检查内容,应首先决定如何比较元素。。。比如说

my_eqtest([1, [2, 3]], [1, [2, 3]])
是否应返回
true
false

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

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

如果不是对象标识,你应该描述(记录)你对相等的意思,否则读代码的人不会理解为什么有些东西不起作用(包括你自己在几周内)。

虽然数组在结构上是等价的,但它们并不完全相同。你将引用与数组进行比较,在你的例子中,是不同的,因为它们是两个不同的数组,碰巧有相似的数据。请参见有关如何比较其值的说明。