我需要有关展平包含对象数组的数组的帮助。
我已经尝试过用flat()运气,lodash变平,但无济于事
Example: -
[
[
{
name : 'a'
},
{
name : 'b'
}
],
[
{
name : 'c'
},
{
name : 'd'
}
]
]
这是代码:- 我在for循环中使用的是 Promise.all()而不是常规的 request 我得到了JSON数据数组,所有已解决的Promise都被推送到一个数组中,从而创建带有JSON对象数组的嵌套Array
const request = require('request-promise')
var fs = require('fs');
let ps = []
let i,n
var requests = require("request");
var _ = require('lodash')
// var options = {
// method: 'GET',
// url: 'http://api.github.com/orgs/samsung',
// headers:
// {
// 'cache-control': 'no-cache',
// Connection: 'keep-alive',
// Referer: 'http://api.github.com/orgs/samsung',
// 'Accept-Encoding': 'gzip : true, deflate',
// Cookie: '_octo=GH1.1.1825524242.1563990727; logged_in=no',
// 'Postman-Token': '3a69f2c3-5762-478a-8178-7d7fef971c1a,38ad48f7-291f-43eb-be81-286d433d8928',
// 'Cache-Control': 'no-cache',
// Accept: '*/*',
// Authorization: 'Basic U2lkZGhhbnRCb2hyYTpjaHJvbWl1bTM2MA==',
// 'User-Agent': 'PostmanRuntime/7.15.2'
// },
// json: true
// };
// requests(options,(error ,response,body) =>{
// console.log(body)
// n = body.public_repos
// if (n % 100 == 0) {
// n = n / 100
// console.log('size',n)
// }
// else {
// n = parseInt((n / 100) + 1)
// console.log('size',n)
// }
// })
for (i = 0; i < 2; i++) {
var val = {
method: 'GET',
url: `https://api.github.com/orgs/samsung/repos`,
qs: { per_page: '100', page: i.toString() },
headers:
{
'cache-control': 'no-cache',
Connection: 'keep-alive',
'Accept-Encoding': 'gzip : true',
Cookie: '_octo=GH1.1.1825524242.1563990727; logged_in=no',
Host: 'api.github.com',
'Postman-Token': 'db984097-df9c-4140-b98a-f9f70c135dbe,4bd1ce88-2405-40b2-8be9-87de92978ccf',
'Cache-Control': 'no-cache',
Accept: '*/*',
'User-Agent': 'PostmanRuntime/7.15.2',
Authorization: 'Basic U2lkZGhhbnRCb2hyYTpjaHJvbWl1bTM2MA=='
},
};
ps.push(request(val))
};
// request(options).then(response => {
// let data = JSON.parse(response)
// // res.send(JSON.parse(response));
// }).catch(err =>{
// res.send(err);
// })
Promise.all(ps).then( result => {
console.log(result.length)
if (Array.isArray(result)) {
console.log("We got an array")
// for(let l = 0; l < result.length;l++)
// {
// for(let m = 0; m < result[l][0].length; m++)
// {
// data.push(result[l][m])
// }
// }
data = result.flat(2)
}
fs.writeFile('./output.json', data, 'utf-8', error => {
console.log('file is ready')
})
}).catch(err => {
console.log(err)
})
我尝试了flat() 和lodash-flatten, 还是一样 将内容写入文件后
答案 0 :(得分:1)
depth | Optional
指定嵌套数组结构应展平的深度级别。默认为1。
您可以指定要展平阵列的深度:
var arr = [
[
{
name : 'a'
},
{
name : 'b'
}
],
[
{
name : 'c'
},
{
name : 'd'
}
]
];
var res = arr.flat(2);
console.log(res);