2017-08-01 72 views
1

我想从复杂的API结构中获取数据。我将如何得到所有的图像从以下对象和数组:如何从复杂的对象/数组结构中获取数据?

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

cars object

我知道我可以得到图像的URL是这样的:

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

但我怎么能打印出来所有的图像网址?

x.cars.map(item => { 
    return(
     item.image[0].url; // this is wrong 
    ); 
}); 

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

+0

请后返回的对象,所以我们可以看到图像如何适用。 – Hektor

+0

会有多张图片? – zabusa

回答

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);

0

我想你错过types

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

我想你错过访问“类型”的对象在你的地图功能 它应该是这样的:

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

cars阵列您在types对象内部有image阵列。因此,您必须迭代两个阵列以打印出所有图像。

请参阅下面的代码。

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)); 
 
})

-1

你试试这个办法吗?

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

我希望它能帮助你。

+0

没有意义。 'image'数组的索引与'cars'数组的索引无关 – charlietfl

0

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

相关问题