@ince

Как найти максимальное значение свойства в массиве объектов?

Есть массив объектов со свойствами
Какие есть адекватные способы нахождения объекта (как элемента массива) с максимальным значением определенного свойства (например максимальное значение поля b)?

[{a: "test1", b: 200},
 {a: "test2", b: 50},
 {a: "test3", b: 700}
]


Должен вернуть test1 или номер элемента массива (в нашем случае 2 (считая от нуля)).
  • Вопрос задан
  • 14397 просмотров
Решения вопроса 3
@StockholmSyndrome
let items = [
  {a: "test1", b: 200},
  {a: "test2", b: 50},
  {a: "test3", b: 700}
];

// если нужен элемент массива
let max = items.reduce((acc, curr) => acc.b > curr.b ? acc : curr);

// если нужен индекс элемента массива
let maxIndex = items.reduce((acc, curr, i) => items[acc].b > curr.b ? acc : i, 0);
Ответ написан
Комментировать
@Cruper
web-падаван
var arr = [...]
var max = arr.reduce((prev, cur) => {
  if (prev.b > cur.b) {
    return prev
  }
  return cur
})
console.log(max) // {a: 'test3', b: 700}

var arr = [...]
var max = 0
for (let i in arr) {
  if (arr[i].b > arr[max].b) {
    max = i
  }
}
console.log(max) // "2"
Ответ написан
Комментировать
@daren93
Full-stack developer
Есть элегантное решение через ramda, функциональная библиотекам для js.
Необходимые функции max, findIndex и prop.
Будет
R.findIndex(R.maxBy(R.prop('b')))([{a: "test1", b: 200},{a: "test2", b: 50},{a: "test3", b: 700}])

https://ramdajs.com/docs/#prop
https://ramdajs.com/docs/#maxBy
https://ramdajs.com/docs/#findIndex
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
BRAGA96
@BRAGA96
const maxObject = array.reduce((prev, current) => prev.b > current.b ? prev : current, {});

const maxIndex = array.reduce((prev, current, index) => prev.b > current.b ? prev : index, {});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы