@ff0xff

Как вернуть ключ многомерного массива с максимальным числом?

У меня есть вот такой код:
var data = {
        0: {
            'Number_of_Something': 212
        },
        1: {
            'Number_of_Something': 65
        },
        2: {
            'Number_of_Something': 657
        }
    }

    var max = Math.max.apply(null,
        Object.keys(data).map(function(e) {
            return data[e]['Number_of_Something'];
        }));


Он возвращает максимальное число, а как мне вернуть ключ массива для максимального числа?
В данном примере это будет 2.
  • Вопрос задан
  • 102 просмотра
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
const [ key ] = Object
  .entries(data)
  .map(n => [ n[0], n[1].Number_of_Something ])
  .reduce((max, n) => max[1] > n[1] ? max : n, [ null, -Infinity ]);

или

const key = (Object
  .entries(data)
  .sort((a, b) => b[1].Number_of_Something - a[1].Number_of_Something)
  .shift() || [ null ])
  .shift();

или

let key = null;
let max = -Infinity;
for (const k in data) {
  if (data.hasOwnProperty(k) && data[k].Number_of_Something > max) {
    key = k;
    max = data[k].Number_of_Something;
  }
}
Ответ написан
@StockholmSyndrome
Object.keys(data).reduce((acc, index) => {
  return data[index]['Number_of_Something'] > data[acc]['Number_of_Something'] ? index : acc;    
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы