从现有对象数组创建JavaScript对象数组

时间:2013-10-12 20:19:58

标签: javascript google-apps-script

我第一次在这里发帖提问,如果我遗漏了任何需要的信息,请告诉我。已更新,以包含所需的输出。

我正在开发谷歌应用程序脚本(基本上是javascript),我正在尝试从对象数组中提取对象并创建一个新的对象数组。我正在使用getRowData的google基本函数(可以在https://developers.google.com/apps-script/guides/sheets找到这些函数)来创建我的初始对象数组。这给了我一行类似的数据(如果有人想知道,有信息削减的话,JIRA导出):

{summary=Internal - Fix PuppetFile Jenkins Jobs, progress=1.0, issueType=Story, resolution=Done, timeSpent=3600.0, key=XXXXX-646, watchers=0.0, remainingEstimate=0.0, numberOfComments=1.0, status=Resolved, assignee=XXXXXXXX}

当我运行我的功能时:

for (var i = 0; i < issueList.length; i++){

rankList[i] = [issueList[i].summary,issueList[i].storyPoints,issueList[i].epicLink,issueList[i].fixVersions];
}

我明白了:

[Internal - Fix PuppetFile Jenkins Jobs, 3.0, null, null]

但我想要的是:

{summary=Internal - Fix PuppetFile Jenkins Jobs, storyPoints=1.0, epicLink=StoryName, fixVersions=Done}

我没有获得该值的关键,我不明白对象的构造方式是否足以让它转移。我看了一些操作键/值对的例子但是当我自己尝试它时,我得到了一堆未定义的。感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:0)

你想要的可能是这样的:

rankList = [];
for (var i = 0; i < issueList.length; i++) {
    issue = issueList[i];
    rankList.push({
        summary: issue.summary,
        storyPoints: issue.progress,
        epicLink: issue.IDONTKNOW,
        fixVersions: issue.resolution
    });
}

我不知道epicLink中的字段是什么,因为从你的例子中并不明显。而我只是猜测其他领域。但这是一般结构,你只需要做出所有正确的对应关系。

答案 1 :(得分:-1)

使用jquery而不是同时获取键和值更容易:

var myarray = [];

$.each(issueList,function(key,value){
  console.log(key);
  console.log(value);

  value.key = key;

  myarray.push(value);
});

console.log(myarray);