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

JavaScript多维数组查找指定值索引返回-1问题解决

问题原因

你操作的是二维数组,arr.findIndex()默认只会遍历最外层的元素,也就是每一个内部子数组,比如第一个遍历到的元素是['France', 'FA', 'Paris'],本身是数组类型。你在回调里写的id === x,是拿整个子数组和字符串类型的'France'做严格相等判断,二者数据类型不同,永远不可能匹配成功,所以最终会返回代表未找到元素的-1。

修复方案

如果只需要获取目标值所在的外层数组索引,只要在findIndex的回调中判断当前遍历到的子数组是否包含目标值即可,修改后代码如下:

var arr = [
  ['France', 'FA', 'Paris'],
  ['Allemagne', 'AJ', 'Berlin']
];

var x = 'France';

var index = arr.findIndex(subArr => subArr.includes(x));

console.log(index); // 输出0,符合预期

如果需要同时获取目标值的外层索引和子数组内位置(即二维坐标),可以通过循环逐层判断:

var arr = [
  ['France', 'FA', 'Paris'],
  ['Allemagne', 'AJ', 'Berlin']
];

var x = 'France';
let outerIdx = -1;
let innerIdx = -1;

for (let i = 0; i < arr.length; i++) {
  const pos = arr[i].indexOf(x);
  if (pos !== -1) {
    outerIdx = i;
    innerIdx = pos;
    break;
  }
}

console.log(outerIdx, innerIdx); // 输出0 0,对应第一个外层子数组的第一个元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:48:29