Как вывести имя объекта с максимальным значением из массива
Доброе.
Возникла такая проблема: Из массива 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, время: 09:38. |