首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么"[[1,2],[3,4]].indexOf([1,2])“返回-1?

这个问题是因为 JavaScript 中的 indexOf() 方法是用来查找数组中某个元素的索引值的。但是在这个例子中,我们尝试使用 indexOf() 方法来查找一个包含两个子数组的数组 1, 2 和 3, 4 是否存在,而不是查找具体的元素。

JavaScript 中的 indexOf() 方法在查找元素时使用的是严格相等(===)的比较方式,而不是深度比较。也就是说,它会比较两个对象的引用是否相等,而不是比较它们的内容是否相等。

在这个例子中,1, 2 和 1, 2 是两个不同的对象,尽管它们的内容相同,但它们的引用不同。因此,indexOf() 方法无法找到一个与 1, 2 相等的子数组,所以返回 -1。

如果你想要比较两个数组的内容是否相等,可以使用其他方法,例如自定义的比较函数或者使用第三方库(如 lodash 的 isEqual() 方法)。这些方法可以对数组进行深度比较,判断它们的内容是否相等。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • C语言每日一题(13) 单身狗1,2

    例如: 有数组的元素是:1,2,3,4,5,1,2,3,4,6 只有5和6只出现1次,要找出5和6....而当你将上面数组的元素一一异或,会发现,单独的那个数字被异或出来了,这就是一种简单的思路(基于异或的交换律) 找单身狗1 int find_single_dog1(int arr[], int sz)...将数组进行异或一下,你会得到5^6的结果,将它们而二进制来进行异或的话,所得到的值必然是有11的(其他结果也满足),接着我们取到它里面第几位1(右移与1异或),同时我们在数组里找到与它位置相同的,结果为...i < sz; i++) { r ^= arr[i]; } for (int i = 0; i < 32; i++) { if ((r >> i) & 1 == 1) { pos...= i; break; } } for (int i = 0; i < sz; i++) { if ((arr[i] >> pos) & 1 == 1) { *p1 ^=

    11310

    老外手把手带你搭建DMZ渗透测试实验室(Part 1,2

    0×00:环境搭建 1、我们需要一个Ubuntu12.04的LTS版本(长期支持版),并且安装到最新版。这个网上有很多教程,多说就是废话了。...有人或许到现在也不是特别理解我们为什么需要搭建一个这样的东西,那我我们可以想象一下这样的场景: 你的渗透雇佣公司接到了一个小公司的白盒/灰盒渗透单子,这就意味着你已经知道了目标企业的全部或者部分的补丁等级和硬件的相关信息...那么首先,我们要给网络接口设置正确的IP Conf t int fastEthernet1/1description toMGMT no shut ip address 10.10.10.2 255.255.255.0full-duplex...#line vty 0 5motd-banner exit 接下来,我们将配置F1/0接口。...我们将针对网络接口fa0/1(MGMT)建立一个访问名单。此名单将阻止由MGMT网络到内网的访问。

    2.3K90

    Scala系列 (二)Scala数组----超详细常用方法及其用法

    ) var b = Array(4,5,6) b++c ++:  合并数组 并将右边的类型作为最终结果返回   val a = List(1,2)  val b = scala.collection.mutable.LinkedList...,第一个元素就不满足,所以返回整个数组 1, 2, 3,4 val a = Array(1, 2, 3,4)  endsWith[B](that: GenSeq[B]): Boolean  判断是否以某个序列结尾...,过程如下 1 1,2 1,2,3 1,2,3,4 */ fold[A1 >: A](z: A1)(op: (A1, A1) ⇒ A1): A1  对序列中的每个元素进行二元运算    def seqno...  拿尾元素  arr.last indexOf(elem: T, from: Int): Int  elem在序列中的索引,找到第一个就返回  val a = Array(1, 3, 2, 3, 4)...println(a.indexOf(3))   // return 1 // 返回elem在序列中的索引,可以指定从某个索引处(from)开始查找,找到第一个就返回 val a = Array(1,

    1.8K00

    前端开发知识汇总--JS

    (element) == index; }) //indexOf返回元素在数组中第一次出现的位置,如果与元素位置不一致,说明该元素在前面已经出现过,是重复元素。...var foo = [1] var bar = foo bar.push(2) // foo=[1,2] bar = [3,4] 复合值(对象)的赋值(即 bar=foo)是通过复制引用的方式实现,两个引用指向同一个值...bar=[3,4]这个赋值操作是改变了bar的引用的指向,[1,2]的值本身并没有改变因此foo依旧等于[1,2]。...var foo = [1] fn(x){ x.push(2) // foo=[1,2] x = [3,4] // foo=[1,2] } fn(foo) 在复合类型最为参数传递的时候,本质上是对foo...因此,再做push操作时,本身值产生了改变(foo=[1,2]),但是赋值操作是改变引用,值没有改变,foo仍然等于[1,2] === 和 == 区别 == 会在比较中进行强制类型转换,=== 则不会

    1.3K42

    java转python记录 一

    简单的数学,cmath复杂的数学(包含复数) #注释 字符串表示 "abc"  'abc'单引号和双引号都是可以的 repr和str区别 repr('表达式')  str('字符串强转')    都能返回字符串...[1,2]+[3,4]和[1,2].append([3,4]) 效率的区别    [1,2]+[3,4]返回的新的序列,[1,2].append([3,4])在[1,2]基础上进行扩充 list.count...(x) list.index(元素)    如果元素未找到,抛出异常 list.insert(3,[a,b]) list.pop()    尾部删除并返回对应的值    seq.pop(0)首部删除返回...     试验下 list.remove(元素)    删除第一个匹配的元素    若元素不存在seq中抛异常 list.reverse() list.reversed()    返回一个逆向迭代器...list.sort()和 list.sorted()sorted返回一个新的列表,sort修改原列表 list.sort(cmp,reverse=True)    cmp函数引用,cmp是自定义的函数

    56410
    领券