Как вывести имя объекта с максимальным значением из массива
Доброе.
Возникла такая проблема: Из массива heroArr нужно вывести имя (name) объекта с максимальным value.
var heroArr = [
{'name': 'ironman', 'value': 0 },
{'name': 'cap', 'value': 0 },
{'name': 'hawkeye', 'value': 3 },
{'name': 'widow', 'value': 0 },
{'name': 'thor', 'value': 0 },
{'name': 'hulk', 'value': 0 },
];
В примере выше должно вывести hawkeye. Находим максимальное значение среди всех ответов: var maxAnswer = Math.max(heroArr.map(answer => answer.value), 0); И создаем массив с объектами, у которых value максимальное: var result = heroArr.filter(answer => answer.value == maxAnswer); По итогу
function getResult() {
for (answer of result) {
alert('Поздравляю, сынок. Теперь ты: ' + answer.name);
}
};
должен быть alert выводящий hawkeye. Но по факту не выводит вообще ничего. И ошибок в консоли нет. Подскажите в чем проблема может быть. Или свой вариант в студию) |
notOldFagFromRussia,
var maxAnswer = Math.max(...heroArr.map(answer => answer.value)); Math.max - принимает аргументы по отдельности, а не массив. |
Цитата:
|
рони,
да |
Цитата:
const heroArr = [
{'name': 'ironman', 'value': 0 },
{'name': 'cap', 'value': 0 },
{'name': 'hawkeye', 'value': 3 },
{'name': 'widow', 'value': 0 },
{'name': 'thor', 'value': 0 },
{'name': 'hulk', 'value': 0 },
];
function getResult(arr) {
return arr.reduce((a,b) => a.value > b.value ? a : b)
};
const answer = getResult(heroArr);
alert('Поздравляю, сынок. Теперь ты: ' + answer.name);
|
| Часовой пояс GMT +3, время: 01:07. |