@melishev

Как найти в массиве объектов элементы, которые в одном из параметров имеет большее значение, чем у других элементов?

Есть массив
[
    {
        "id": 1,
        "title": "Материалы",
        "alias": "materials",
        "subcategories": [
            {
                "id": 1,
                "title": "Ортопедические материалы",
                "alias": "orthopedic-materials",
                "category": "Материалы",
                "rating": 10
            },
            {
                "id": 2,
                "title": "Терапевтические материалы",
                "alias": "therapeutic-materials",
                "category": "Материалы",
                "rating": 3
            },
            {
                "id": 3,
                "title": "Хирургические материалы",
                "alias": "surgical-materials",
                "category": "Материалы",
                "rating": 12
            }
        ]
    },
    {
        "id": 2,
        "title": "Инструменты",
        "alias": "tools",
        "subcategories": [
            {
                "id": 4,
                "title": "Ножницы",
                "alias": "scissors",
                "category": "Инструменты",
                "rating": 8
            },
            {
                "id": 5,
                "title": "Пинцеты",
                "alias": "tweezers",
                "category": "Инструменты",
                "rating": 1
            }
        ]
    },
    {
        "id": 3,
        "title": "Оборудование",
        "alias": "equipment",
        "subcategories": [
            {
                "id": 6,
                "title": "Апекслокатор­ы",
                "alias": "apexlocators",
                "category": "Оборудование",
                "rating": 4
            }
        ]
    }
]


Как гуляю по всему массиву, найти 2 Объекта ПОДКАТЕГОРИИ, у которых самый большой рейтинг?
А точнее как вывести по значению rating объекты - 'Хирургические материалы' и 'Ортопедические материалы'?
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
  1. Собрать из вложенных массивов один общий
  2. Отсортировать полученный массив
  3. Взять сколько надо первых/последних (зависит от направления сортировки) элементов

const result = arr
  .flatMap(n => n.subcategories)
  .sort((a, b) => a.rating - b.rating)
  .slice(-2);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы