#javascript
#javascript
Вопрос:
Если я хочу получить список только types
из автомобилей для этих данных:
let items = [
{
magnet: [
true
],
cars: [
{
type: "BMW"
}
],
name: "Roby"
},
{
magnet: [
false
],
cars: [
{
type: "Mercede"
}
],
name: "Max"
}
];
Есть ли более эффективный способ, чем отображение через один раз, как это? Я чувствую, что это не очень хорошо, потому что я предполагаю, что в массиве есть 1 элемент cars
.
items.map(x => {
return x.cars[0].type
})
Комментарии:
1. Итак, как вы ожидаете, что это будет выглядеть, если их больше одного?
2. просто массив строк всех автомобилей
3. Я бы не беспокоился о производительности перед написанием кода. Рассмотрите возможность оптимизации только в том случае, если это становится проблемой
4.
items.flatMap(item => item.cars.map(car => car.type))
?5. итак, два цикла. отправка в массив
Ответ №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));