根据对象属性之一的最大值从对象数组中取出一个对象

pal*_*nic 0 javascript arrays sorting object filter

假设我有一个像这样的对象数组

const arr = [
  {name: 'John', age: 15},
  {name: 'Max', age: 17},
  {name: 'Tom', age: 11},
]
Run Code Online (Sandbox Code Playgroud)

我怎样才能只获取包含 Max, 17 的对象?这将是结果

b = [{ name: Max, age: 17 }]
Run Code Online (Sandbox Code Playgroud)

或更好

c = { name: Max, age: 17 }
Run Code Online (Sandbox Code Playgroud)

Ori*_*ori 5

将数组减少到具有最高值的对象age

const arr = [{"name":"John","age":15},{"name":"Max","age":17},{"name":"Tom","age":11}]

const result = arr.reduce((acc, o) => !acc || o.age > acc.age ? o : acc, null)

console.log(result)
Run Code Online (Sandbox Code Playgroud)

我使用null的默认值来Array.reduce()防止数组为空时出现错误。但是,您也可以事先检查空数组:

const findMaxAge = arr => arr.length 
  ? arr.reduce((acc, o) => o.age > acc.age ? o : acc)
  : null

const arr = [{"name":"John","age":15},{"name":"Max","age":17},{"name":"Tom","age":11}]

console.log(findMaxAge(arr))

console.log(findMaxAge([]))
Run Code Online (Sandbox Code Playgroud)