提问人:Neg K 提问时间:8/16/2022 最后编辑:M. JustinNeg K 更新时间:11/8/2023 访问量:349
为什么我的两个带有字符串元素的数组不相等?[复制]
Why my two arrays with string elements are not equal? [duplicate]
问:
我有一个称为 ids_to_remove 的数组。当我在浏览器检查中输入它时,我得到以下结果:
ids_to_remove
(2) ['1', '2']
当我输入相同的数组时,我得到:
['1','2']
(2) ['1', '2']
当我比较元素时,我得到:
ids_to_remove[0]==='1'
true
ids_to_remove[1]==='2'
true
也
typeof(ids_to_remove[0])
'string'
但是当我比较数组时:
ids_to_remove===['1','2']
false
有谁知道为什么这两个数组不相等?
答:
1赞
Talha Fayyaz
8/16/2022
#1
Javascript 数组是对象,您不能简单地使用相等运算符 == 来了解这些对象的内容是否相同。相等运算符只会测试两个对象是否实际上是完全相同的实例(例如 myObjVariable==myObjVariable,也适用于 null 和 undefined)。
您可以简单地使用此功能:
function arrayEquals(a, b) {
return Array.isArray(a) &&
Array.isArray(b) &&
a.length === b.length &&
a.every((val, index) => val === b[index]);
}
此函数仅适用于简单的非原始类型数组。
评论
0赞
Neg K
8/16/2022
谢谢!实际上,我比较数组的原因是我使用 ids_to_remove 作为另一个函数的输入,但它不起作用。当我只是在输入中手动编写 ['1','2'] 时,它会起作用,所以我试图了解有什么不同。
评论