Если я хочу получить список только 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
})
просто массив строк всех автомобилей
Я бы не беспокоился о производительности до написания кода. Рассматривайте оптимизацию только в том случае, если это становится проблемой
items.flatMap(item => item.cars.map(car => car.type))
?
так две петли. нажать на массив
Нет более эффективного способа, чем перебрать все объекты и их .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));
Итак, как вы ожидаете, что это будет выглядеть, если их больше одного?