Получение наибольшего числа значений пары ключей в массиве JavaScript - PullRequest
0 голосов
/ 07 ноября 2018

Итак, я пытаюсь определить, какой элемент имеет наибольшее число в «размере» в массиве «элементы». И распечатайте, какой элемент как в ('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 голосов
/ 07 ноября 2018

Вы можете объединить 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);
0 голосов
/ 07 ноября 2018

вы можете использовать lodash для этого

lodash maxBy

_.maxBy(items, 'size');
0 голосов
/ 07 ноября 2018

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);
0 голосов
/ 07 ноября 2018

Вы можете взять синтаксис распространения и отобразить разрушенное свойство.

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);
...