我有一些数据,其中一个字段叫做tag,in有时会包含一个值数组。
我需要做的是计算这些值并将它们分成不同的变量。
以下是数据:
myObject = [
{
"object": [
{
"id": "8062",
"name": "name 1"
"tags": ['tag1','tag2'],
"desc": "desc 1",
},
{
"id": "8061",
"name": "name 2"
"tags": ['tag 2', 'tag 3'],
"desc": "desc 2"
},
{
"id": "8060",
"name": "name 3"
"tags": ['tag 2', 'tag 3'],
"desc": "desc 3"
}
]
}
];
这就是我最终需要的结果:
tag1_count = 1;
tag2_count = 3;
tag3_count = 2;
我该怎么做?
答案 0 :(得分:1)
myObject = [{
"object": [{
"id": "8062",
"name": "name 1",
"tags": ['tag1', 'tag2'],
"desc": "desc 1"
}, {
"id": "8061",
"name": "name 2",
"tags": ['tag2', 'tag3'],
"desc": "desc 2"
}, {
"id": "8060",
"name": "name 3",
"tags": ['tag2', 'tag3'],
"desc": "desc 3"
}]
}];
var map = {};
myObject[0].object.forEach(function(object) {
object.tags.forEach(function(tag) {
if(map[tag] === undefined){
map[tag] = 1;
}else{
map[tag] = map[tag] + 1;
}
});
});
console.log(map);
答案 1 :(得分:1)
您可以像这样使用reduce()
并返回对象。
var myObject = [{
"object": [{
"id": "8062",
"name": "name 1",
"tags": ['tag1', 'tag2'],
"desc": "desc 1",
}, {
"id": "8061",
"name": "name 2",
"tags": ['tag 2', 'tag 3'],
"desc": "desc 2"
}, {
"id": "8060",
"name": "name 3",
"tags": ['tag 2', 'tag 3'],
"desc": "desc 3"
}]
}];
var result = myObject[0].object.reduce(function(r, e) {
e.tags.forEach(function(t) {
var key = t.replace(/ /g, '') + '_count'
r[key] = (r[key] || 0) + 1;
})
return r;
}, {})
console.log(result)
答案 2 :(得分:0)
只需使用for-of
循环遍历数组,获取tags
属性的每个长度,并将每个所需的值存储到不同的变量。
var i = 1;
for (obj of myObject[0].object) {
window["tag" + i + "_count"] = obj.tags.length; // e.g. tag1_count = 2, tag2_count = 3, etc...
i++;
}