#javascript #object
Вопрос:
Пытаюсь получить наибольшее значение вместе с его ключом из объекта javascript. Я пробовал разные решения, такие как Object.key или Object.entries, но, похоже, не могу найти выход, никаких мыслей.
let dates = {
'2021-08-06': 39,
'2021-08-07': 0,
'2021-08-08': 0,
'2021-08-09': 149,
'2021-08-10': 174,
'2021-08-11': 231,
'2021-08-12': 300,
}
предыдущие попытки я мог получить значение с помощью object.keys, но по какой-то причине либо я рисую пробел, либо что-то еще, но я не могу вернуть его ключ.
Это предыдущее решение просто получает минимальное и наибольшее число, но как я могу вернуть соответствующий ключ?
let arr = Object.keys( dates ).map(function ( key ) { return d[key]; });
let max = Math.max.apply( null, arr );
let maxKey, maxValue = 0;
for(const [key, value] of Object.entries(dates)) {
if(value > max) {
maxValue = value;
maxKey = key;
}
}
console.log(maxKey,maxValue);
Ответ №1:
Легко. Отсортируйте объект.записи по значению, затем верните первую «запись».
Результат будет представлен в виде ["key", value]
let dates = {
'2021-08-06': 39,
'2021-08-07': 0,
'2021-08-08': 0,
'2021-08-09': 149,
'2021-08-10': 174,
'2021-08-11': 231,
'2021-08-12': 300
}
const result = Object.entries(dates).sort(([, a], [, b]) => b - a)[0];
console.log(result);
Возможно, доброта ES6 пугает людей, заставляя их понижать голос, вот менее современный подход (хотя точно такая же семантика)
let dates = {
'2021-08-06': 39,
'2021-08-07': 0,
'2021-08-08': 0,
'2021-08-09': 149,
'2021-08-10': 174,
'2021-08-11': 231,
'2021-08-12': 300
}
const result = Object.entries(dates).sort(function(a, b) {
return b[1] - a[1];
})[0];
console.log(result);
Комментарии:
1. @PeterSeliger — наверное, потому, что я ничего не сказал :p
2. @PeterSeliger — хотя мне на самом деле все равно. Видите ли, в Интернете есть болезнь — социальные сети выявляют худшее в людях, и я думаю, что некоторые приходят сюда и ведут себя так же
3. почему :p Я думаю, что OP уже знает об объекте.записи
Ответ №2:
Вы можете использовать:
Object.entries(dates).sort((a, b) => {
return b[1] - a[1]
})[0]
чтобы получить наибольшее значение вместе с его ключом в массиве.
Комментарии:
1. @PeterSeliger — вероятно, один и тот же человек 😀
2. Как это работает, так
a
как иb
являются массивами?3. Я отредактировал, чтобы это действительно работало, извините за причиненные неудобства