Результат почти правильный, но у меня возникают проблемы с выравниванием вложенного массива boxart. ДанныеИзвлечь данные Javascript, используя функции map(), filter() и concatAll()
Javascript:
var movieLists = {
name: "Instant Queue",
videos : [
{
"id": 70111470,
"title": "Die Hard",
"boxarts": [
{width: 150, height:200, url:"http://cdn-0.nflximg.com/images/2891/DieHard150.jpg"},
{width: 200, height:200, url:"http://cdn-0.nflximg.com/images/2891/DieHard200.jpg"}
],
"url": "http://api.netflix.com/catalog/titles/movies/70111470",
"rating": 4.0,
"bookmark": [{ id:432534, time:65876586 }]
},
{
"id": 654356453,
"title": ....,
}];
Ожидаемый результат: (с использованием только функции .map()
, .filter()
, .concatAll()
, вернуть идентификатор, название, Boxart: URL фильмов, которые имеют размеры Boxart изображения 150x200
// [
// {"id": 675465,"title": "Fracture","boxart":"http://cdn-0...." },
// {"id": 65432445,"title": "The Chamber","boxart":"http://cdn-0...." },
// {"id": 654356453,...}
// ];
Токовый выход:
// [ //boxart value is an array
// {"id": 675465,"title": "Fracture","boxart":["http://cdn-0...."]},
// {"id": 65432445,"title": "The Chamber","boxart":["http://cdn-0...."]},
// {"id": 654356453,...}
// ];
мое решение:
return movieLists.map(function (category) {
return category.videos.map(function (video) {
return {
id: video.id,
title: video.title,
boxart: video.boxarts.filter(function (boxartFeature) {
return boxartFeature.width === 150 && boxartFeature.height === 200;
})
.map(function (boxartProp) {
return boxartProp.url;
})
};
});
}).concatAll(); //Flattens nested array by 1 dimension (please see demo)
Я знаю, что нужно применить функцию .concatAll()
удалить вложенную массив Boxart, но я не могу найти место, где.
Пожалуйста, нажмите here for demo
«У меня есть данные JSON» - это JavaScript, а не JSON. – Quentin