如何通过对象属性值获取数组中对象的另一属性值
通过对象属性值获取对应属性的方法
你提到的objArray.car['BMW'].price写法直接用不了,因为objArray是数组,本身没有car这个属性,只有数组里的每个元素才是包含car和price的对象。不过可以通过下面两种方式实现需求:
方法一:转换为映射对象(适合多次查询的场景)
先把原数组转换成以car为键的映射对象,之后就能像你期望的那样快速访问:
// 仅映射car和price的对应关系 const carPriceMap = objArray.reduce((map, item) => { map[item.car] = item.price; return map; }, {}); // 直接通过car名称取price console.log(carPriceMap['BMW']); // 输出 2000 console.log(carPriceMap.VW); // 输出 3500
如果需要保留完整的对象(后续可能用到其他属性),可以这样转换:
const carObjMap = objArray.reduce((map, item) => { map[item.car] = item; return map; }, {}); // 此时写法就和你预想的很接近了 console.log(carObjMap['BMW'].price); // 输出 2000
方法二:直接用数组find方法(适合单次查询)
如果只是偶尔查询一次,直接用数组的find方法定位目标对象即可:
// 找到car为BMW的对象后取price,可选链避免找不到时报错 const bmwPrice = objArray.find(item => item.car === 'BMW')?.price; console.log(bmwPrice); // 输出 2000
内容的提问来源于stack exchange,提问作者rainman
相关产品推荐
相关产品推荐

