Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как вывести имя объекта с максимальным значением из массива (https://javascript.ru/forum/misc/75880-kak-vyvesti-imya-obekta-s-maksimalnym-znacheniem-iz-massiva.html)

notOldFagFromRussia 14.11.2018 14:49

Как вывести имя объекта с максимальным значением из массива
 
Доброе.

Возникла такая проблема:

Из массива 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.

Но по факту не выводит вообще ничего.
И ошибок в консоли нет.

Подскажите в чем проблема может быть.
Или свой вариант в студию)

j0hnik 14.11.2018 15:03

notOldFagFromRussia,
var maxAnswer = Math.max(...heroArr.map(answer => answer.value));

Math.max - принимает аргументы по отдельности, а не массив.

рони 14.11.2018 15:10

Цитата:

Сообщение от j0hnik
, 0

лишнее!!!

j0hnik 14.11.2018 15:13

рони,
да

рони 14.11.2018 15:19

Цитата:

Сообщение от notOldFagFromRussia
Или свой вариант

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.