2016-06-29 138 views
3

我有数据下列数据:获取平均值

var v = { 
    "2015-09-23":[ 
    {"AllConversions":"0.1","AverageCpc":"0.01","AverageCpm":"0.02","AveragePosition":"8.3",Id:1}, 
    {"AllConversions":"0.0","AverageCpc":"0.00","AverageCpm":"0.00","AveragePosition":"9.0",Id:1} 
    ], 
    "2015-09-18":[ 
    {"AllConversions":"0.1","AverageCpc":"77.14","AverageCpm":"239.57","AveragePosition":"7.7",Id:1}, 
    {"AllConversions":"0.0","AverageCpc":"39.97","AverageCpm":"703.91","AveragePosition":"3.8",Id:1}, 
    {"AllConversions":"0.0","AverageCpc":"20.40","AverageCpm":"381.36","AveragePosition":"4.3",Id:1} 
    ] 
}; 

var columns = [ 
    "AllConversions", 
    "AverageCpc", 
    "AverageCpm", 
    "AveragePosition" 
]; 

而且我想返回下面的对象是所有的字段不进行身份总和:

{ 
    "2015-09-23": [ 
     {"AllConversions":"0.1","AverageCpc":"0.01","AverageCpm":"0.02","AveragePosition":"17.3",Id:1} 
    ], 
    "2015-09-18": [ 
     {"AllConversions":"0.1","AverageCpc":"137.51","AverageCpm":"1324.84","AveragePosition":"15.8",Id:1} 
    ] 
} 

我试着利用下划线代码:

_.each(columns,function(item){ 
    var out = _(groups).map(function (g, key) { 
     return { 
      Date: key, 
       item: _(g).reduce(function (m, x) { return m + x.item; }, 0) 
     } 
    }); 
}); 

但是,我在运行代码时遇到'NaN'错误。

+0

请格式化你的代码正确 –

+0

我会总结服务器端的所有对象和JSON返回。如果你有权访问服务器端。 –

+0

只需遍历Json数组值!并将它们存储在一个数组中,并找到平均值 – Jois

回答

1

检查了这一点..

<html> 
<head> 
    <script> 
     var v={ 

     "2015-09-23":[ 
      {"AllConversions":"0.1","AverageCpc":"0.01","AverageCpm":"0.02","AveragePosition":"8.3",Id:1},  
      {"AllConversions":"0.0","AverageCpc":"0.00","AverageCpm":"0.00","AveragePosition":"9.0",Id:1} 
     ], 

     "2015-09-18":[ 
      {"AllConversions":"0.1","AverageCpc":"77.14","AverageCpm":"239.57","AveragePosition":"7.7",Id:1}, 
      {"AllConversions":"0.0","AverageCpc":"39.97","AverageCpm":"703.91","AveragePosition":"3.8",Id:1}, 

      {"AllConversions":"0.0","AverageCpc":"20.40","AverageCpm":"381.36","AveragePosition":"4.3",Id:1} 

     ]}; 


     var columns=[ 
     "AllConversions","AverageCpc","AverageCpm","AveragePosition" 
     ]; 

    var output = {}; 
    var smallOutput = {}; 
    var tempDate = []; 
     for(var i in v){ 
      var temp = 0; 
      for(var j = 0; j < columns.length ; j++){ 
       for(var k = 0 ; k < v[i].length; k++) temp += parseFloat(v[i][k][columns[j]]); 

       smallOutput[columns[j]] = temp ; 
       temp=0; 

      } 
      output[[i]] = smallOutput; 
     } 

     console.log(output); 


</script> 
</head> 
<body> 
</body> 
</html> 

这里是小提琴.. https://jsfiddle.net/4t1teyk0/

检查您的控制台。

这里是输出

enter image description here

+1

我测试了它,它运作良好... –

+1

谢谢 - Tirthraj Barot –