Я пытаюсь найти лучший способ выбрать объект с наибольшим значением конкретного свойства (в данном случае количество неправильных ответов) и вернуть другое свойство (имя). НАПРИМЕР. следующий объект должен вернуть Mark:
[
{name: "Henry", age: "NYN", attempts: 3, wrong: 2},
{name: "Mark", age: "NNNY", attempts: 4, wrong: 3},
{name: "Beth", age: "", attempts: 0, wrong: 0},
{name: "Sally", age: "YYNY", attempts: 4, wrong: 1},
]
Как лучше всего это сделать (в JavaScript)? Спасибо за любую помощь!
Возможный дубликат Нахождение максимального значения атрибута в массиве объектов



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вот простой способ:
var objArray=[
{name: "Henry", age: "NYN", attempts: 3, wrong: 2},
{name: "Mark", age: "NNNY", attempts: 4, wrong: 3},
{name: "Beth", age: "", attempts: 0, wrong: 0},
{name: "Sally", age: "YYNY", attempts: 4, wrong: 1},
];
function getNameOfMostWrong(){
//Set first object in array for most wrong as default
var mostWrongPerson=objArray[0];
for(var person in objArray){
if (objArray[person].wrong > mostWrongPerson.wrong){
mostWrongPerson=objArray[person];
}
}
return mostWrongPerson.name;
}
Вы можете упростить цикл for, чтобы проверить максимальное значение wrong и выбрать этот объект. Он будет иметь сложность O(n), аналогичную алгоритму линейного поиска.
var arr = [
{name: "Henry", age: "NYN", attempts: 3, wrong: 2},
{name: "Mark", age: "NNNY", attempts: 4, wrong: 3},
{name: "Beth", age: "", attempts: 0, wrong: 0},
{name: "Sally", age: "YYNY", attempts: 4, wrong: 1},
];
var highest = arr[0].wrong, index;
for(var i=1; i<arr.length; i++){
if (arr[i].wrong > highest){
highest = arr[i];
index = i;
}
}
var highestWrong = arr[index];
console.info('highest wrong attempt is done by', highestWrong.name);