如何从复杂的对象/数组结构中获取数据?

时间:2017-08-01 11:34:34

标签: javascript

我正在尝试从复杂的API结构中获取数据。我如何从以下对象和数组中获取所有图像:

Name = gameObject.name;

cars object

我知道我可以像这样获取图片网址:

const x = { cars: [ 
    { types: 
      { 
        name: "VW", 
        image: [{ url: "http://www.lkjl.com" }] 
      } 
    }, 
    {...}, 
    {...} 
]};

但是如何打印出所有图片网址?

x.cars[0].types.image[0].url

我是否需要在地图功能中添加另一张地图?

6 个答案:

答案 0 :(得分:1)

您可以使用Array#reduce映射url属性。

const
    x = { cars: [{ types: { name: "VW", image: [{ url: "http://www.lkjl.com" },{ url: "http://www.alkjl.com" }] } }, { types: { name: "Tata", image: [{ url: "http://www.lskal.com" },{ url: "http://www.lkfjl.com" }] } }] },
    images = x.cars.reduce((r, item) => r.concat(item.types.image.map(i => i.url)), []);

console.log(images);

答案 1 :(得分:0)

我认为你错过了types

x.cars.map(item => {
   return(
       item.types.image[0].url;
   );
});

答案 2 :(得分:0)

我认为您错过了访问地图功能中的“类型”对象 它应该是这样的:

x.cars.map(item => {
   return(
       item.types.image[0].url; //this should work for you
   );
});

答案 3 :(得分:0)

cars数组中,image对象中包含types数组,因此您必须遍历两个数组以打印出所有图像。

请参阅下面的代码。

const x = { cars: [ 
    { types: 
      { 
        name: "VW", 
        image: [{ url: "http://www.lkjl.com" }] 
      } 
    }, 
    { types: 
      { 
        name: "VW", 
        image: [{ url: "http://www.lkjl12.com" }] 
      } 
    }
]};

x.cars.forEach(car => {
  car.types.image.forEach( i => console.log(i.url));
})

答案 4 :(得分:0)

x.cars.map(item => item.types.image [0] .url)

答案 5 :(得分:-1)

你尝试过这种方式吗?

x.cars.map((item, key) => {
 return(
   item.types.image[0].url;
  //you're missing 'types'
 );
});

我希望它可以帮到你。