如何根据第二个数组的匹配项获取第一个数组的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 }, // 更多元素... ]
解决方案
基础实现
通过两步即可完成需求:
- 从
items2中定位到isPrimary为true的对象,提取其id值 - 在
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
相关产品推荐
相关产品推荐

