Javascript 为什么';t[a,b,c]=[a,b,c]
已经进行了大约2个小时的错误测试,结果发现如果两个阵列是相同的。逻辑运算符Javascript 为什么';t[a,b,c]=[a,b,c],javascript,Javascript,已经进行了大约2个小时的错误测试,结果发现如果两个阵列是相同的。逻辑运算符=和==表示它不是 首先,为什么。 其次,我如何才能使其成为真的呢?数组是一种参考数据类型,永远不能相等。 您可以在不使用shell的情况下检查和比较两个阵列中的数据。请尝试以下操作: JSON.stringify(array1) == JSON.stringify(array2) 您使用的是值之间的逻辑比较,而不是数组/对象。 或者,您可以: if (array1.length == array2.length){
=
和==
表示它不是
首先,为什么。
其次,我如何才能使其成为真的呢?数组是一种参考数据类型,永远不能相等。 您可以在不使用shell的情况下检查和比较两个阵列中的数据。请尝试以下操作:
JSON.stringify(array1) == JSON.stringify(array2)
您使用的是值之间的逻辑比较,而不是数组/对象。
或者,您可以:
if (array1.length == array2.length){
for(var i = 0; i <= array1.length; i++){
if(array1[i] != array2[i]){
return false;
}
}
return true;
} else {
return false;
}
if(array1.length==array2.length){
对于(var i=0;i),因为它们是单独的对象。(我指的是数组)哦,我明白了。它们有相同的值,但在技术上是不同的列表。对象比较不是基于对象中的值;而是基于对象的基本标识。不总是有效的。例如,如果它的排列方式不同,那么如果成员的顺序不同,这将失败。虽然技术上正确,但这样做是一种可怕的方式原因1)速度很慢,2)array1
或array2
可能有循环依赖关系,3)顺序需要保留/规范化。此外,并非所有数组都可以像这样字符串化,OP要求比较[a,b,c]=[a,b,c]而不是[a,b,c]=[c,b,a]或者与复杂数据集相关的任何内容。不是真的。你可以通过使用变量作为对同一数组的引用来将同一数组与同一数组进行比较。好的,你是对的。我在示例中考虑了这个选项,如果你将引用与包含数组的数组的成员进行比较,则不使用变量会很有用。在这种情况下,甚至indexOf等都可以使用。常用于缓存/池/排队