Функциональный подход ...
Ваш вопрос кажется немного расплывчатым, но я думаю, что вы ищете значение type
из первого элемента в каждом массиве urls
.
const data = {
"data": {
"results": [{
"name": "Deadpool",
"urls": [{
"type": "detail",
"url": "http://marvel.com/characters/12/deadpool?utm_campaign=apiRef&utm_source=6fa9bcf637a9185ee2e3035cb2d3b465"
},
{
"type": "wiki",
"url": "http://marvel.com/universe/Deadpool_(Wade_Wilson)?utm_campaign=apiRef&utm_source=6fa9bcf637a9185ee2e3035cb2d3b465"
},
{
"type": "comiclink",
"url": "http://marvel.com/comics/characters/1009268/deadpool?utm_campaign=apiRef&utm_source=6fa9bcf637a9185ee2e3035cb2d3b465"
}]
}]
}
};
const types = data.data.results.map(({ urls: [first, ...rest] }) => first.type);
console.log(types);
Давайте разберем это ...
data.data.results.map(...)
Array.prototype.map
вернет новый массив срезультаты вызова предоставленной функции для каждого элемента в массиве results
.
({ urls: ... })
Это называется destructuring .Он определяет новую переменную urls
, которой присваивается значение свойства urls
при выполнении итерации по элементам results
.
({ urls: [first, ...rest] })
Значение переменной urls
, которую мы определилибудет массив.Мы заботимся только о первом элементе в массиве, поэтому мы распространяем массив, определяя новую переменную с именем first
, которой назначено значение первого элемента, и переменную rest
,это будет массив rest элементов.В основном, возьмите голову массива.Эти операции называются spread и rest соответственно.
({ urls: [first, ...rest] }) => first.type
Наконец, верните значение свойства type
из первого элемента urls
.
Если я совершенно не прав
И вам нужен элемент "детали" в каждом массиве urls
, тогда будет достаточно небольшое изменение:
const data = {
"data": {
"results": [{
"name": "Deadpool",
"urls": [{
"type": "detail",
"url": "http://marvel.com/characters/12/deadpool?utm_campaign=apiRef&utm_source=6fa9bcf637a9185ee2e3035cb2d3b465"
},
{
"type": "wiki",
"url": "http://marvel.com/universe/Deadpool_(Wade_Wilson)?utm_campaign=apiRef&utm_source=6fa9bcf637a9185ee2e3035cb2d3b465"
},
{
"type": "comiclink",
"url": "http://marvel.com/comics/characters/1009268/deadpool?utm_campaign=apiRef&utm_source=6fa9bcf637a9185ee2e3035cb2d3b465"
}]
}]
}
};
const urls = data.data.results.map(({ urls }) =>
urls.find(({ type }) => type === 'detail')
);
console.log(urls);
Если вы хотите узнать больше о функциональном программировании, Эрик Эллиотт написал отличный набор статей по функциональному программированию на JavaScript.Вот первый .