如何通过给定ID获取对象数组中的姓名(仅用指定数组方法)
根据ID从对象数组中获取对应姓名(无循环,仅用指定数组方法)
你提供的代码存在逻辑错误:每个people对象的id是数组类型,直接用===和单个ID值对比永远不会匹配,因为数组与数字的类型和值都不相等。以下是符合要求的修正实现:
方式一:获取第一个匹配的姓名(高效)
使用find()方法找到第一个包含目标ID的对象,再提取姓名:
var people = [ {name: 'John', id: [34, 44, 77]}, {name: 'Jose', id: [43, 54, 65]}, {name: 'Hanna', id: [56, 34, 98]} ]; var targetName = people.find(person => person.id.includes(56))?.name; console.log(targetName); // 输出:Hanna
find()是允许使用的数组方法,会自动遍历数组并返回第一个满足条件的元素person.id.includes(56)用于判断当前对象的ID数组中是否包含目标ID- 可选链
?.处理无匹配对象的情况,避免报错
方式二:获取所有匹配的姓名
如果存在多个对象包含目标ID,用filter()配合map()提取所有匹配的姓名:
var people = [ {name: 'John', id: [34, 44, 77]}, {name: 'Jose', id: [43, 54, 65]}, {name: 'Hanna', id: [56, 34, 98]}, {name: 'Lily', id: [56, 78]} ]; var targetNames = people .filter(person => person.id.includes(56)) .map(person => person.name); console.log(targetNames); // 输出:["Hanna", "Lily"]
filter()筛选出所有包含目标ID的对象map()将筛选后的对象转换为姓名数组
内容的提问来源于stack exchange,提问作者Alvaro Vasquez
相关产品推荐
相关产品推荐

