我想将两个对象总结为一个总对象并获得两个值的百分比变化(然后加上除以值的值)。我在应用这个逻辑时遇到了一些问题。数据是动态的,因此同一个数组中可能有两个以上的对象。
我首选的方法是JavaScript,但jQuery也很好,如果它更简单!下面是一个示例,这里是一个jsfiddle - http://jsfiddle.net/4z63cwhz/4/
响应数据:
$scope.data = [
{
"July":{
"params":{
"frequency":"Monthly",
"category":"Overview",
"year":"2015",
"month":"July"
},
"subcategory":{
"us total":{
"interaction rate":0.51,
"digital interaction rate":8.33,
"impressions":500,
"interactions":256
},
"discover me":{
"digital u.s. discover site sessions":50
},
"me com":{
"total me.com site sessions":50
}
},
"action":"new"
},
"August":{
"params":{
"frequency":"Monthly",
"category":"Overview",
"year":"2015",
"month":"August"
},
"subcategory":{
"us total":{
"interaction rate":0.51,
"digital interaction rate":8.33,
"impressions":500,
"interactions":256
},
"discover me":{
"digital u.s. discover site sessions":50
},
"me com":{
"total me.com site sessions":50
}
},
"action":"new"
}
}
]
JS:
$scope.calculate = function(){
var sumObj = {};
var local = $scope.data;
for(var i in local){
var obj = local[i];
for(var i2 in obj){
for(var i3 in obj[i2].subcategory){
//do the calculation here.
console.log(i3);
}
}
}
};
我希望获得的sumObj
类似于下面的内容:
{
"us total":{
"interaction rate":{
total: total#,
'%change': %change
},
"digital interaction rate":{
total: total#,
'%change': %change
},
"impressions":{
total: total#,
'%change': %change
},
"interactions":{
total: total#,
'%change': %change
}
},
"discover me":{
"digital u.s. discover site sessions":{
total: total#,
'%change': %change
}
},
"me com":{
"total me.com site sessions":{
total: total#,
'%change': %change
}
}
}
提前致谢!
答案 0 :(得分:0)
如果json对象都重复相同的格式,那么你就可以做到:
var text= {};
local[current].attributeString (some calculation) local[next].attributeString += text;
其中current = i和next = i + 1。
然后你可以使用:
var obj = JSON.parse(text);
将您的String转换为json对象。我可能会使用某种类型的键/值对而不是字符串,但这可能有助于减少一些循环。