首页 > 解决方案 > 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
})

标签: javascript

解决方案


没有比遍历所有对象及其 更有效的方法了.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));

推荐阅读