我有两个相同的数组,我想看看它是否等于并返回true
var a = [1,2];
var b = [1,2];
if(a === b){ 返回true }
这两个阵列显然是相同的,但我变得不平等。有人可以解释为什么以及是否有一种比较两者的简单方法?
答案 0 :(得分:1)
问题是您要创建两个不同的数组,并===
检查a
和b
是否具有相同的引用。因此你的病情失败了。没有用于比较数组的内置代码,但是有相同的库。但是你只需编写一个函数来通过循环来比较数组。
答案 1 :(得分:1)
==
运营商它没有做你的想法,而且非常接近完全没用(例如"1" == [[1]]
)。请改为===
。如果双方==
和===
的类型相同,请执行相同操作,但如果他们不是==
进行疯狂转换,您将会后悔。
===
检查身份即。只有当双方是完全相同的对象时,它才会返回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?
如果不是对象身份,你应该描述(记录)你对平等意味着什么,否则谁读取代码将无法理解为什么某些东西不起作用(包括你自己在几周内)。
答案 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;
}