如何在Postmates中添加数组然后导出?

时间:2018-05-17 00:02:34

标签: javascript arrays postman

假设我在Postman上有一个数组作为环境变量:

tags: ["11111111", "22222222", "33333333", "44444444"]

然后我接受了Postman的这个JSON身体回复:

{
"id": "12345678",
"tagging": {
   "tags": [
       {
         "id": "11111111"}]
}

我想将数组“tags”数据与JSON主体进行比较,并将“id”记录到数组中。

如何更改数组,使其现在看起来像:

tags: ["11111111":["12345678"], "22222222", "33333333", "44444444"]

我会一遍又一遍地说,10000次,然后想要计算每个标签中有多少“ids”。

我是一名业余编码员,所以当我学习这种语言时,请耐心等待。

1 个答案:

答案 0 :(得分:0)

在我们开始编码之前,我们需要整理出所需的数据格式。您的示例包含语法错误:

tags: ["11111111":["12345678"], "22222222", "33333333", "44444444"]

应该是:

{ tags: [ { "11111111": ["12345678"] }, "22222222", "33333333", "44444444"] }

修复了语法错误后,我们可能还想要更改。即使javascript不会抱怨,tags现在也是混合类型的array:它包含一个对象({ "11..": ["123..."] })和字符串("222..", "333..")。我想你要把它改成这个:

{ 
  tags: {
    "11111111": [ "12345678" ],
    "22222222": [ ],
    "33333333": [ ]
  }
}

我们已将tags放入一个对象中,该对象为每个标记存储一组id。当没有id时,数组为空。

为了初始化这个对象,我们遍历标签数组:

const tags = ["11111111", "22222222", "33333333", "44444444"];

const tagGroups = {};
tags.forEach(t => { tagGroups[t] = []; });

console.log(tagGroups);

现在您已经设置了空组,您已准备好检查数据。

const tags = ["11111111", "22222222", "33333333", "44444444"];
const data = [{
  "id": "12345678",
  "tagging": {
    "tags": [{
      "id": "11111111"
    }]
  }
}];

const tagGroups = {};
tags.forEach(t => {
  tagGroups[t] = [];
});

data.forEach(d => {
  d.tagging.tags.forEach(tag => {
    tagGroups[tag.id].push(d.id);
  });
});

console.log(tagGroups);

现在,您可以通过调用tagGroups[id].length来检查标记的数量。 E.g:

console.log(tagGroups["11111111"].length); // Logs `1`

编写此代码有更短/更短的方法,但我尽量保持其可读性。

注意:如果您的data包含不在tags数组中的标记,则代码将会中断。