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

如何根据第二个数组的匹配项获取第一个数组的id索引

问题:获取匹配指定条件的数组元素索引

我有两个对象数组,需求如下:获取第一个数组中,与第二个数组里isPrimary属性设为true的对象id匹配的元素对应的索引。注:第二个数组中只会存在一个isPrimary为true的对象。

示例代码:

let items = [
  {
    "id": 1,
    "color": "red"
  },
  {
    "id": 2,
    "color": "green"
  },
  // 更多元素...
]

let items2 = [
  {
    "id": 1,
    "age": 18,
    "isPrimary": false
  },
  {
    "id": 2,
    "age": 25,
    "isPrimary": true
  },
  // 更多元素...
]

解决方案

基础实现

通过两步即可完成需求:

  1. 从items2中定位到isPrimary为true的对象,提取其id值
  2. 在items数组中查找与该id匹配的元素的索引

代码示例:

// 提取目标id
const targetId = items2.find(item => item.isPrimary).id;
// 获取匹配元素的索引
const targetIndex = items.findIndex(item => item.id === targetId);

console.log(targetIndex); // 示例中会输出 1

健壮性优化

如果需要处理边界情况(比如items2中无isPrimary为true的对象,或items中无匹配元素),可以增加判断逻辑:

// 找到目标对象
const primaryItem = items2.find(item => item.isPrimary);

if (!primaryItem) {
  console.error("未找到isPrimary为true的对象");
  // 此处可添加对应业务处理逻辑
} else {
  const targetIndex = items.findIndex(item => item.id === primaryItem.id);
  
  if (targetIndex === -1) {
    console.error("items数组中未找到匹配id的元素");
  } else {
    console.log("匹配元素的索引:", targetIndex);
  }
}

方法说明

  • Array.find():返回数组中第一个满足测试条件的元素,因题目明确items2中仅有一个目标对象,无需额外处理多个匹配的情况。
  • Array.findIndex():返回数组中第一个满足测试条件的元素的索引,若无匹配元素则返回-1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 20:55:01