Выбор объекта с наибольшим значением в многомерном массиве

Я пытаюсь найти лучший способ выбрать объект с наибольшим значением конкретного свойства (в данном случае количество неправильных ответов) и вернуть другое свойство (имя). НАПРИМЕР. следующий объект должен вернуть 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)? Спасибо за любую помощь!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
2
37
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вот простой способ:

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);

Другие вопросы по теме