Я пытаюсь получить данные из сложной структуры API. Как получить все изображение из следующих объектов и массивов:
const x = { cars: [
{ types:
{
name: "VW",
image: [{ url: "http://www.lkjl.com" }]
}
},
{...},
{...}
]};
Я знаю, что могу получить URL-адрес изображения следующим образом:
x.cars[0].types.image[0].url
Но как я могу распечатать все URL-адреса изображений?
x.cars.map(item => {
return(
item.image[0].url; // this is wrong
);
});
Нужно ли иметь другую карту внутри функции карты?
Вы можете использовать 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);
x.cars.map(item => item.types.image [0].url)
Я думаю, вы пропустили types
:
x.cars.map(item => {
return(
item.types.image[0].url;
);
});
Внутри массива 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));
})
я думаю, вы пропустили доступ к объекту "типы" в своей функции карты, это должно выглядеть так:
x.cars.map(item => {
return(
item.types.image[0].url; //this should work for you
);
});
вы попробуете этот путь?
x.cars.map((item, key) => {
return(
item.types.image[0].url;
//you're missing 'types'
);
});
Я надеюсь, что это может вам помочь.
image
не имеет ничего общего с индексом массива cars