如何用JavaScript根据ID从对象数组中提取目标对象?
根据ID提取数组中的对应对象
你可以用两种方式实现需求,下面分别说明:
方法一:直接用find()(最简洁)
find()方法会遍历数组,返回第一个满足条件的元素,比findIndex()更直接,适配你的场景:
const arr = [ {"id": 1,"name": "Bob","age": 36}, {"id": 2,"name": "Laura","age": 24}, {"id": 3,"name": "Michael","age": 28}, {"id": 4,"name": "Tim","age": 54} ]; function getObjectById(targetId) { return arr.find(item => item.id === targetId); } // 调用示例:传入4 console.log(getObjectById(4)); // 输出:{"id": 4,"name": "Tim","age": 54}
如果传入的ID不存在,find()会返回undefined,你可以根据需求添加默认返回值,比如:
return arr.find(item => item.id === targetId) || null;
方法二:用你提到的findIndex()
如果一定要用findIndex(),步骤是先找到对应元素的索引,再通过索引从数组中取出对象:
function getObjectById(targetId) { const index = arr.findIndex(item => item.id === targetId); // 索引为-1表示没找到对应元素 return index !== -1 ? arr[index] : null; } // 调用示例 console.log(getObjectById(4)); // 输出:{"id": 4,"name": "Tim","age": 54}
两种方法都能实现需求,find()更适合直接获取元素,findIndex()则在需要同时拿到索引和元素的场景更有用。
内容的提问来源于stack exchange,提问作者Code Junkie
相关产品推荐
相关产品推荐

