从每个文件中提取JSON对象,然后将其添加到数组中

时间:2020-03-07 16:50:51

标签: javascript arrays json

我有4个链接,每个链接包含一个不同的JSON对象。我想获取所有内容,然后将它们全部放入空数组中。 我想到了这个(我省略了async / await):

let arr = [];
let iter = 0;
const FIXED_QUANTITY = 4;
while(iter < FIXED_QUANTITY) {
  const res = axios.get(`/data/${iter}.json`);
  arr = [...arr, res.data.body];
  iter++;
}

我的问题是-是否可以使此代码更加优雅(也许使用更高阶的函数)?

2 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情吗?

const urls = [];
const FIXED_QUANTITY = 4;
const iter = 4;

while (iter < FIXED_QUANTITY) {
  urls.push(`/data/${iter}.json`);
}

const arr = await Promise.all([...urls.map(url => axios.get(url))]).map(
  res => res.data.body
);

答案 1 :(得分:0)

您可以按以下方式使用函数Array.from

let arr = Array.from({length: FIXED_QUANTITY}, async (_, iter) => (await axios.get(`/data/${iter}.json`)).data.body);

此方法生成具有以下结构的数组:

[{}, {}, ..., {}]