javascript - 具有对象数组的深度展平嵌套数组
问题描述
我需要有关展平包含对象数组的数组的帮助。
我用 flat() 试试运气,lodash flatten,但无济于事
Example: -
[
[
{
name : 'a'
},
{
name : 'b'
}
],
[
{
name : 'c'
},
{
name : 'd'
}
]
]
这是代码: - 我在 for 循环中使用Promise.all()而不是普通请求,我得到 JSON 数据数组,所有已解析的 Promise 都被推送到一个数组中,从而创建带有 JSON 对象数组的嵌套数组
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,在将内容写入文件后仍然得到同样的结果
解决方案
depth | Optional
指定嵌套数组结构应该展平的深度级别。默认为 1。
您可以指定要展平数组的深度:
var arr = [
[
{
name : 'a'
},
{
name : 'b'
}
],
[
{
name : 'c'
},
{
name : 'd'
}
]
];
var res = arr.flat(2);
console.log(res);
推荐阅读
- node.js - 使用“.fields”属性从 multer 中捕获错误
- python - 在 Pytesseract 返回值中转义换行符
- git - 我很难在 IBMi 上构建 git 环境
- python - 如何使用 python 在 Blender 2.9 中将材质的基色设置为等于顶点颜色?
- javascript - 如何更改 div 位置 onclick
- kubectl - Pod 上的卷挂载为空
- excel - 选中另一个复选框时自动选中一个复选框excel
- javascript - Cryptojs AES解密字节数组的密钥和iv结果在javascript中为0
- blazor - 当另一个选择选项更改时,如何将所选选项更改为默认值?
- react-native - 如何从 Firestore 获取本地反应的日期?