Как отсортировать массив объектов по нескольким признакам?

Есть массив:

[
            {
                name: 'auth',
                age: 23,
                request: [{
                    success: true,
                    time: 1000
                }, {
                    success: true,
                    time: 1200
                },
                {
                    success: true,
                    time: 900
                }]
            },
            {
                name: 'pay',
                age: 24343,
                request: [{
                    success: true,
                    time: 2000
                }, {
                    success: false,
                    time: 500
                },
                {
                    success: false,
                    time: 5000
                }]
            }
        ]

Надо его отсортировать так, чтобы на первом месте был тот объект, у которого больше успешных реквестов и общее их время самое маленькое.
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const sortedArr = arr
  .map(n => {
    const success = n.requests.filter(n => n.success);
    return {
      item: n,
      time: success.reduce((acc, n) => acc + n.time, 0),
      success: success.length,
    };
  })
  .sort((a, b) => (b.success - a.success) || (a.time - b.time))
  .map(n => n.item);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽
26 янв. 2021, в 15:11
200000 руб./за проект
26 янв. 2021, в 14:55
2000 руб./за проект
26 янв. 2021, в 14:48
900 руб./в час