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

如何用JavaScript遍历JSON对象,返回所有匹配条件的索引数组?

获取所有匹配元素的索引数组

你当前的代码使用findIndex只能返回第一个匹配元素的索引,无法收集所有符合条件的索引。要实现匹配id为18A38时返回[1,3]这样的结果,可以参考以下两种方案:

单ID匹配场景

如果只需要匹配单个id,直接遍历数组收集索引即可:

const checkId = '18A38';
const indices = [];

dataOject.forEach((item, index) => {
  if (item.id === checkId) {
    indices.push(index);
  }
});

console.log(indices); // 输出 [1, 3]

多ID匹配+高效查询场景

如果需要处理checkArray中的多个id,且数据量较大(数百条),建议先构建id到索引数组的映射表,后续查询无需重复遍历原数组:

// 构建id与对应索引数组的映射
const idIndexMap = dataOject.reduce((map, item, index) => {
  // 若当前id未在映射中,初始化空数组
  if (!map[item.id]) {
    map[item.id] = [];
  }
  map[item.id].push(index);
  return map;
}, {});

// 根据checkArray获取对应索引数组
const result = checkArray.map(id => idIndexMap[id] || []);

console.log(JSON.stringify(result)); // 输出 [[1,3]]

方案说明

  • 原代码的findIndex方法在找到第一个匹配项后就会终止遍历,因此只能拿到首个索引;
  • 上述方案通过遍历整个数组(或一次遍历构建映射),收集所有符合条件的索引,满足需求;
  • 映射表方案仅需遍历原数组一次,后续查询效率为O(1),更适合数据量较大的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 11:36:13