繁体   English   中英

具有对象数组的深度展平嵌套数组

[英]Deep Flattening Nested array with array of objects

我需要有关展平包含对象数组的数组的帮助。

我已经尝试过用flat()运气,lodash展平,但是却无济于事

Example: -
[
  [
    {
      name : 'a'
    },
    {
      name : 'b'
    }
   ],
   [
    {
      name : 'c'
    },
    {
      name : 'd'
    }
   ]
] 

这是代码:-我在Pro循环中使用Promise.all()而不是常规请求 ,我得到了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,将内容写入文件后仍然遇到相同的问题

点击此处下载文件

flat():参数

depth | Optional

指定嵌套数组结构应展平的深度级别。 默认为1。

您可以指定要展平数组的深度:

 var arr = [ [ { name : 'a' }, { name : 'b' } ], [ { name : 'c' }, { name : 'd' } ] ]; var res = arr.flat(2); console.log(res); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM