假设我在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”。
我是一名业余编码员,所以当我学习这种语言时,请耐心等待。
答案 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
数组中的标记,则代码将会中断。