@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.
  • Вопрос задан
  • 108 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
const [ key ] = Object
  .entries(data)
  .reduce((max, [ k, { Number_of_Something: v } ]) => {
    return max[1] > v ? max : [ k, v ];
  }, [ 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;
  }
}

или

const max = Math.max(...Object.values(data).map(n => n.Number_of_Something));
const key = Object.keys(data).find(k => data[k].Number_of_Something === max) || null;
Ответ написан
@StockholmSyndrome
Object.keys(data).reduce((acc, index) => {
  return data[index]['Number_of_Something'] > data[acc]['Number_of_Something'] ? index : acc;    
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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