如何从JavaScript对象数组中提取指定属性值最大的单个对象
实现方案
1. 直接获取单个最大age对象
用reduce方法遍历数组,每次对比两个元素的age属性,保留更大的那个,遍历结束后就能拿到age最大的对象:
const arr = [ {name: 'John', age: 15}, {name: 'Max', age: 17}, {name: 'Tom', age: 11}, ] // 得到单个对象c const c = arr.reduce((prev, curr) => prev.age > curr.age ? prev : curr) console.log(c) // 输出 {name: 'Max', age: 17}
如果存在多个age相同且都是最大值的对象,这个方法只会返回第一个出现的最大age对象。
2. 获取包含最大age对象的数组
先算出所有元素的最大age值,再用filter筛选出所有age等于最大值的元素,就能得到结果数组:
// 先计算最大age const maxAge = Math.max(...arr.map(item => item.age)) // 得到结果数组b const b = arr.filter(item => item.age === maxAge) console.log(b) // 输出 [{name: 'Max', age: 17}]
如果有多个同最大age的对象,都会被包含在结果数组中。如果确定只有一个最大值,也可以直接把上面得到的c放到数组里:const b = [c],效果完全一致。
内容的提问来源于stack exchange,提问作者palnic
相关产品推荐
相关产品推荐

