在数组JavaScript中获得最大数量的键对值

时间:2018-11-07 10:20:03

标签: javascript arrays ecmascript-6 max key-pair

因此,我试图获取“项目”数组中“大小”中编号最大的项目。并打印出(“ item1”,“ item2”,“ item3”)中的哪个项目

let items = [
  {
    item: 'item1',
    size: 545
  },
  {
    item: 'item2',
    size: 89
  },
  {
    item: 'item3',
    size: 789
  }
]

所以我尝试了

let sizeMax = Math.max.apply(Math, items.map((o) => {
  return o.size;
}))
console.log(sizeMax)

,但是不是ES6方式,我无法弄清楚如何打印尺寸最大的“项目” 拿出名字 我一直在尝试:

items.forEach((item) => {
  function arrayMax(item) {
  return items.size.reduce((h, j) => Math.max(h, j));
}
console.log(items.item)

但是我不太清楚我做错了什么

4 个答案:

答案 0 :(得分:3)

您可以采用扩展语法并映射已破坏的属性。

let items = [{ item: 'item1', size: 545 }, { item: 'item2', size: 89 }, { item: 'item3', size: 789 }],
    max = Math.max(...items.map(({ size }) => size));

console.log(max);

要获得最大的item中的size,可以通过将geratest大小作为累加器来缩小数组,然后采用通缉属性。

let items = [{ item: 'item1', size: 545 }, { item: 'item2', size: 89 }, { item: 'item3', size: 789 }],
    max = items.reduce((a, b) => a.size > b.size ? a : b);

console.log(max.item);

答案 1 :(得分:1)

您可以为此使用lodash

lodash maxBy

_.maxBy(items, 'size');

答案 2 :(得分:1)

let items = [
  {
    item: 'item1',
    size: 545
  },
  {
    item: 'item2',
    size: 89
  },
  {
    item: 'item3',
    size: 789
  }
]

let max = items.reduce((acc, curr) => (acc.size < curr.size ? curr : acc))

console.log('max item: ',max.item);
console.log('max size: ',max.size);

答案 3 :(得分:0)

您可以将Array.prototype.sort与数组+对象解构分配结合起来:

let items = [{item: 'item1',size: 545},{item: 'item2',size: 89},{item: 'item3',size: 789}];

const [ {item: max} ] = items.sort((a,b) => b.size - a.size);

console.log(max);