Верхнее 2 максимальное значение из массива объекта

97
7

У меня есть массив объектов вроде

[ {"id":0,"start":0,"duration":117,"slide":4,"view":0},
{"id":0,"start":0,"duration":12,"slide":1,"view":0},
{"id":0,"start":0,"duration":8,"slide":3,"view":0},
{"id":0,"start":0,"duration":7,"slide":2,"view":0}
];

Я хочу получить 3 объекта с тремя верхними значениями продолжительности.

спросил(а) 2021-01-28T03:11:16+03:00 3 месяца, 1 неделя назад
1
Решение
77

Вы можете сортировать их с помощью Array#sort, descending и принимать первые три элемента.

var array = [{ id: 0, start: 0, duration: 7, slide: 2, view: 0 }, { id: 0, start: 0, duration: 12, slide: 1, view: 0 }, { id: 0, start: 0, duration: 117, slide: 4, view: 0 }, { id: 0, start: 0, duration: 8, slide: 3, view: 0 }],
top3duration = array.sort(function (a, b) {
return b.duration - a.duration;
}).slice(0, 3);

console.log(top3duration);

.as-console-wrapper { max-height: 100% !important; top: 0; }

ответил(а) 2021-01-28T03:11:16+03:00 3 месяца, 1 неделя назад
63

var myList = [ {"id":0,"start":0,"duration":117,"slide":4,"view":0},
{"id":0,"start":0,"duration":12,"slide":1,"view":0},
{"id":0,"start":0,"duration":8,"slide":3,"view":0},
{"id":0,"start":0,"duration":7,"slide":2,"view":0}
];

outList = myList.sort(function(a,b){ return b.duration - a.duration; }).slice(0,3);

return outList;

ответил(а) 2021-01-28T03:11:16+03:00 3 месяца, 1 неделя назад
62

 yourArray.sort(function(a,b){ 
return b.duration - a.duration;
}).splice(0,3);

console.log(yourArray); // Will give top 3 objects of high duration.

Но ваш mainArray будет изменен. Если вы хотите, чтобы они были как новый массив, то перейдите с срезом (0,3) и назначьте новый массив в качестве ответа [Fallenreaper]

ответил(а) 2021-01-28T03:11:16+03:00 3 месяца, 1 неделя назад
45

Я собираюсь сделать ваши вещи несколькими быстрыми шагами.

var myList = [ {"id":0,"start":0,"duration":117,"slide":4,"view":0},
{"id":0,"start":0,"duration":12,"slide":1,"view":0},
{"id":0,"start":0,"duration":8,"slide":3,"view":0},
{"id":0,"start":0,"duration":7,"slide":2,"view":0}
];
outList = myList.sort(function(a,b){ return b.duration - a.duration; }).slice(0,3);
return outList;

ответил(а) 2021-01-28T03:11:16+03:00 3 месяца, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема