@picka

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

Есть массив
[
    {
        "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 объекты - 'Хирургические материалы' и 'Ортопедические материалы'?
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
  1. Собрать из вложенных массивов один общий
  2. Отсортировать полученный массив
  3. Взять сколько надо первых/последних (зависит от направления сортировки) элементов

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

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽