我正在尝试使用Wordpress API来获取一些数据,我需要基于restbase和ID进行此操作。
我有一个看起来像这样的数组:
const array = [
{
taxonomy: 'category',
rest_base: 'categories',
id: [ 1, 2 ]
},
{
taxonomy: 'post_tag',
rest_base: 'tags',
id: [ 4, 5, 6, 7 ]
}
];
这是地图功能:
array.map( ({ rest_base, id }) => {
console.log( rest_base ); // categories or tags
console.log( id ); // array of id's
// Do a call here for each id
});
我需要以某种方式获取所有个人ID,这样我才能拨打电话:
example.com/wp-json/wp/v2/<rest_base>/<id>
有人可以帮我吗?
答案 0 :(得分:1)
使用Array.flatMap()
迭代外部数组,并使用id
迭代Array.map()
数组,并使用fetch
或类似的API进行调用,您将获得一个promise数组:
const array = [{"taxonomy":"category","rest_base":"categories","id":[1,2]},{"taxonomy":"post_tag","rest_base":"tags","id":[4,5,6,7]}];
const result = array.flatMap( ({ rest_base, id }) =>
id.map(v => `example.com/wp-json/wp/v2/${rest_base}/${v}`) // wrap the string with a fetch or similar function
);
console.log(result);
如果您不能使用Array.flatMap()
,请使用嵌套的Array.map()
调用,然后扩展到Array.concat()
进行展平:
const array = [{"taxonomy":"category","rest_base":"categories","id":[1,2]},{"taxonomy":"post_tag","rest_base":"tags","id":[4,5,6,7]}];
const result = [].concat(...array.map( ({ rest_base, id }) =>
id.map(v => `example.com/wp-json/wp/v2/${rest_base}/${v}`) // wrap the string with a fetch or similar function
));
console.log(result);
答案 1 :(得分:0)
您可以使用任何http请求库。在async / await中使用浏览器的访存API的最简单方法:
const resultArray = array.map( async({ rest_base, id }) => {
console.log( rest_base ); // categories or tags
console.log( id ); // array of id's
return id.map(id => await fetch(`example.com/wp-json/wp/v2/${rest_base}/${id}`));
});
await函数将返回调用结果。这样,您可以同步获取数据。可以使数据异步,可以创建一个Promise数组并使用Promise all:
const promiseArray = array.map( async({ rest_base, id }) => {
console.log( rest_base ); // categories or tags
console.log( id ); // array of id's
return id.map(id => return fetch(`example.com/wp-json/wp/v2/${rest_base}/${id}`));
});
const result = Promise.all(promiseArray);
答案 2 :(得分:0)
我可能会使用Array.prototype.reduce
创建一个对象,其中键是您的rest_base
值,而这些值是对应的id
值。在此之上,您可以像下面这样简单地进行迭代:
const arr = [{
taxonomy: 'category',
rest_base: 'categories',
id: [1, 2]
},
{
taxonomy: 'post_tag',
rest_base: 'tags',
id: [4, 5, 6, 7]
}
];
const map = arr.reduce((acc, val) => {return {...acc, [val.rest_base]: val.id}}, {});
/*
{
"categories": [
1,
2
],
"tags": [
4,
5,
6,
7
]
}
*/
for (const rest_base in map) {
for (const id of map[rest_base]) {
console.log(`example.com/wp-json/wp/v2/${rest_base}/${id}`)
}
}
/*
example.com/wp-json/wp/v2/categories/1
example.com/wp-json/wp/v2/categories/2
example.com/wp-json/wp/v2/tags/4
example.com/wp-json/wp/v2/tags/5
example.com/wp-json/wp/v2/tags/6
example.com/wp-json/wp/v2/tags/7
*/