You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript使用indexOf查找嵌套数组索引返回-1问题咨询

问题原因

核心逻辑

indexOf 方法匹配元素时底层使用*严格相等运算符(===)*做判断,而数组属于JavaScript中的引用类型,两个独立创建的数组即使内部元素完全一致,只要指向的内存地址不同,严格相等判断就会返回false。

你代码中传入 indexOf 的 ["bob", 5] 是全新创建的数组实例,和 items 中首个元素的内容完全一致但属于不同引用,因此匹配失败,最终返回 -1。

补充说明

  • 字符串、数字等基础值类型使用 indexOf 不会出现该问题,因为基础类型直接比较值本身,内容一致就会判定为相等
  • 数组、普通对象、函数等引用类型,都存在「内容一致但严格相等判断为假」的特性

预期效果实现方案

如果需要按内容匹配查找下标,可以使用findIndex方法自定义匹配规则:

const items = [
  ["bob", 5],
  ["jeff", 2],
  ["wal-E", 2],
  ["bob", 1],
  ["bob", 10]
];
const index = items.findIndex(item => item[0] === "bob" && item[1] === 5);
// 此时index返回 0,符合预期结果

内容的提问来源于stack exchange,提问作者Seesi L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 03:45:03