Javascript 为什么';是否在搜索的数组中查找数组?(需要解释而不是解决方案)
我正在学习Javascript,并想了解indexOf在搜索的数组中找不到数组的原因。(解释、理论等是本文的目标,不需要其他代码或其他解决方案) 在数组“arr”中查找数组[1,2]时,为什么indexOf看不到该数组 这是否与价值观和价值观有关Javascript 为什么';是否在搜索的数组中查找数组?(需要解释而不是解决方案),javascript,arrays,indexof,Javascript,Arrays,Indexof,我正在学习Javascript,并想了解indexOf在搜索的数组中找不到数组的原因。(解释、理论等是本文的目标,不需要其他代码或其他解决方案) 在数组“arr”中查找数组[1,2]时,为什么indexOf看不到该数组 这是否与价值观和价值观有关 const o = { name: "Ethan" }; const arr = [1, 5, "a", o, true, 5, [1, 2], "9"]; console.log(arr.indexOf([1, 2])); //returns -1
const o = { name: "Ethan" };
const arr = [1, 5, "a", o, true, 5, [1, 2], "9"];
console.log(arr.indexOf([1, 2])); //returns -1 expected 1
预期返回值为1,但收到的却是-1。为什么?
有谁能分享这种情况的细节/理论/计算机科学方面的信息吗
答案是:地址是对象,而不是数组
答案是:寻址函数和for循环,而不是indexOf方法
答案是:处理对象并提供解决方案来更改其执行方式,但是我看不到关于为什么看起来相同的两个数组没有被标识为相同的解释
引用:解决了比较运算符的问题——也许答案就在严格相等的范围内。这可能就是我缺乏理解的原因。正在搜索的[1,2]是否被解释为与数组“arr”中的[1,2]不同
:的引用地址为indexOf,但似乎不共享另一个数组中某个数组的任何指导。(锯齿阵列?)
我不熟悉Javascript(如您所知),我希望详细了解为什么和/或如何在示例中搜索[1,2]与arr数组的元素不匹配,而arr数组也是[1,2],因为
indexOf()使用严格的
相等(与===或三重相等运算符使用的方法相同)
及
无论是严格的还是抽象的,两个不同的对象永远不相等
比较。
仅当操作数引用同一对象时,比较对象的表达式才为真
每当使用
==
或===
比较两个数组时,它会检查两个操作数是否引用内存中的同一对象(数组)indexOf
方法在内部使用=
运算符
传递给函数的数组不引用作为另一个数组元素的数组,尽管它们的元素相同。您可以与的同一个数组一起使用,并使用另一种方法检查该项是否为数组、长度以及每个值是否相等
const
o={name:“Ethan”},
a=[1,2],
arr=[1,5,“a”,o,true,5[1,2],a,“9”];
console.log(arr.indexOf(a));//7.
console.log(arr.findIndex(item=>
数组.isArray(项目)&&
item.length==a.length&&
a、 每((v,i)=>a[i]==v)
)); // 6
你为什么期望1
?顺便说一句,您正在搜索相同的标识,而不是针对两个不同的数组代码>在这里。在进一步研究这个。。。1.)JavaScript中的数组实际上是对象,尽管它们的编写方式不同()2.)因为数组是对象,所以每个数组都独立存在。indexOf查找精确匹配,尽管数组包含相同的值,但indexOf方法不是查看值,而是查看整个数组对象。数组不匹配的原因准确吗?是的,准确。例如,两个叫梅隆罗的人不一定是同一个人:)