首页 > 解决方案 > 使用数组对象获取最大更大的键值

问题描述

我想在Javascript中将一个对象的最大键转换成一个数组,下面是一个JSON数组的例子。我尝试使用 reduce() ES6 函数,但它只会在记录中返回,所以请帮助我获得最大编号。键数组,我还提供我想要的输出,如果高阶函数(ES6)的解决方案会很棒

let arr = [{
                key : 1,
                name : 'testaa',
                dept : 'ggg'
            }, {
                key : 1,
                name : 'testaa',
                dept : 'ggg'
            }, {
                key : 2,
                name : 'testaa',
                dept : 'ggg'
            }, {
                key : 2,
                name : 'testaa',
                dept : 'ggg'
            }, {
                key : 2,
                name : 'testaa',
                dept : 'ggg'
            }, {
                key : 3,
                name : 'testaa',
                dept : 'ggg'
            }, {
                key : 3,
                name : 'testaa',
                dept : 'ggg'
            }]

 output i want maximum key of array:


    arr = [{
                key : 3,
                name : 'testaa',
                dept : 'ggg'
            }, {
                key : 3,
                name : 'testaa',
                dept : 'ggg'
            }]

我尝试使用减少功能但只获得一条记录

let data = myArray.reduce(function(prev, curr) {
    return prev.key > curr.key ? prev : curr;
});

标签: javascriptfunctiones6-promise

解决方案


您可以分两步完成:

  1. 使用查找最大值Math.max
  2. 使用此值过滤您的数组.filter()

let arr = [{
  key: 1,
  name: 'testaa',
  dept: 'ggg'
}, {
  key: 1,
  name: 'testaa',
  dept: 'ggg'
}, {
  key: 2,
  name: 'testaa',
  dept: 'ggg'
}, {
  key: 2,
  name: 'testaa',
  dept: 'ggg'
}, {
  key: 2,
  name: 'testaa',
  dept: 'ggg'
}, {
  key: 3,
  name: 'testaa',
  dept: 'ggg'
}, {
  key: 3,
  name: 'testaa',
  dept: 'ggg'
}];

let max = Math.max(...arr.map(item => item.key));

console.log(arr.filter(item => item.key === max));


推荐阅读