2017-08-01 17 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)