Js: лучший способ перебрать вложенный объект?

Если я хочу получить список только types автомобилей для этих данных:

let items = [
      {
         magnet: [
            true
         ],
         cars: [
             {
               type: "BMW"
             }
         ],
         name: "Roby"
      },
      {
         magnet: [
            false
         ],
         cars: [
             {
               type: "Mercede"
             }
         ],
         name: "Max"
      }
    ];

Есть ли более эффективный способ, чем отображение через один раз? Я чувствую, что это не очень хорошо, потому что я делаю предположение, что в массиве cars есть 1 элемент.

items.map(x => {
   return x.cars[0].type
})

Итак, как вы ожидаете, что это будет выглядеть, если их больше одного?

epascarello 13.12.2020 21:22

просто массив строк всех автомобилей

MaggieIngram2 13.12.2020 21:24

Я бы не беспокоился о производительности до написания кода. Рассматривайте оптимизацию только в том случае, если это становится проблемой

evolutionxbox 13.12.2020 21:24
items.flatMap(item => item.cars.map(car => car.type)) ?
Jonas Wilms 13.12.2020 21:24

так две петли. нажать на массив

epascarello 13.12.2020 21:26
Поведение ключевого слова "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) для оценки ваших знаний,...
0
5
101
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Нет более эффективного способа, чем перебрать все объекты и их .cars, но, конечно, есть более правильный способ, чем предположить, что у каждого объекта есть ровно одна машина.

Наиболее подходящим вспомогательным методом является flatMap, который можно использовать как

const cars = items.flatMap(item => item.cars);
const brands = cars.map(car => car.type);

или за один раз

const brands = items.flatMap(item => item.cars.map(car => car.type));

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