对象内部的Javascript推数组

时间:2018-11-26 17:05:48

标签: javascript arrays

如何将第二个api调用结果中的数据数组创建为所需的格式? 我有这样的代码

var github = require('octonode');
var client = github.client();
var userName = "octocat";
var repoName = "";
var branchName = "";
var data = [];
var branches = [];

client.get('/users/'+userName+'/repos', {}, function (err, status, body, headers) {
  body.forEach(function(obj) {
    repoName = obj.name;
    //==============================
      client.get('repos/'+userName+'/'+repoName+'/branches', {}, function (errx, statusx, bodyChild, headersx) {
      bodyChild.forEach(function(objChild) {
        branchName = objChild.name;
          });
      });
    });
});

我也收到了repoNamebranchName数据。

我想要我的数据格式

enter image description here

使用方法

data.push({
   name: repoName,
   branches: 'branchName loooping here for every repoName'
});

因此branches重复数据可以包含在我的分支标签中

谢谢

2 个答案:

答案 0 :(得分:1)

我想你可以做这样的事情:

var data = [];

client.get('/users/'+userName+'/repos', {}, function (err, status, body, headers) {
  body.forEach(function(obj) {
    repoName = obj.name;
    client.get('repos/'+userName+'/'+repoName+'/branches', {}, function (errx, statusx, bodyChild, headersx) {
        let elem = {"name": repoName, "branches": []}; //create json object for each repo 
        bodyChild.forEach(function(objChild) {
          elem.branches.push(objChild.name); //push all branchs to that elem
        });
        data.push(elem); // add the elem to the data array
      });
    });
});

答案 1 :(得分:0)

因此,在这种情况下,data是一个对象,它的属性name是字符串,而另一个属性branches是数组。如果要将数据推送到属性branches,可以仅在其上调用push()函数。

请检查以下示例:

    let data = {
        name: "repoName",
        branches: [
            {
                name: "foo"
            }
        ]
    }

    data.branches.push(
        {
            name: "bar"
        }
    );

    console.log(data);