JavaScript - 对数组

时间:2015-10-13 18:23:13

标签: javascript jquery angularjs

我想将两个对象总结为一个总对象并获得两个值的百分比变化(然后加上除以值的值)。我在应用这个逻辑时遇到了一些问题。数据是动态的,因此同一个数组中可能有两个以上的对象。

我首选的方法是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
        }
     }
}

提前致谢!

1 个答案:

答案 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对象。我可能会使用某种类型的键/值对而不是字符串,但这可能有助于减少一些循环。