首页 > 解决方案 > 如何从特定数组中获取新数组

问题描述

如何从特定数组中获取新数组?

我不知道如何处理这样的数组:

let arr1 = [
  {name: 'a', age: 1},
  {name: 'a', age: 2},
  {name: 'a', age: 3},
  {name: 'b', age: 1},
  {name: 'b', age: 2}
  {name: 'b', age: 3}
  {name: 'c', age: 1}
  {name: 'c', age: 2}
  ...
]

“我想要这个结果:从每个相同的项目中name,选择最大的age价值”

let arr2 = [
  {name: 'a', age: 3},
  {name: 'b', age: 3},
  {name: 'c', age: 2} 
  ...
]

标签: javascriptarraysobject

解决方案


只需使用filter来选择agename.

let arr1 = [{name:'a',age:1},{name:'a',age:2},{name:'a',age:3},{name:'b',age:1},{name:'b',age:2},{name:'b',age:3}];

const biggest = arr1.reduce((a, { name, age }) => {
  a[name] = a[name] || age;
  age > a[name] ? a[name] = age : a[name];
  return a;
}, {});

let arr2 = arr1.filter(({ name, age }) => biggest[name] == age);

console.log(arr2);
.as-console-wrapper { max-height: 100% !important; top: auto; }


推荐阅读