簡體   English   中英

如何遍歷數組數組並組合值

[英]how to loop through array of arrays and combine values

我需要遍歷數組數組並計算每個數組的總和。 Json是具有x,y坐標數組的kendo-ui圖表系列。 我需要返回x,y值的總和。 linq.js或javascript都可以。 感謝JSON

var =series = [{
"style":"smooth",
"color":"blue",
"data":[
    [600,30000],
    [800,60000],
    [1100,100000]
],
"name":"Subject Property",
"removeByNames":[
    ["Product1"],
    ["Product2"],
    ["Product3"]
],
 "$$hashKey":"object:30"
}]

所以對於這個例子,我將需要結束

var newSeries = [{
"style":"smooth",
"color":"blue",
"data":[
    [30600],
    [60800],
    [101100]
],
"name":"Subject Property",
"removeByNames":[
    ["Product1"],
    ["Product2"],
    ["Product3"]
],
"$$hashKey":"object:30"
}]
for(var i=0;i<series[0].data.length;i++){
   var val = series[0].data[i];
   newSeries.data[i] = val[0] + val[1];
}

您可以使用循環並使用reduce

var series = [{
            ...
}]

for (var i = 0; i < series.length; i++) {
    for (var j = 0; j < series[i].data.length; j++) {
        series[i].data[j] = series[i].data[j].reduce(function(p,c) {
            return p + c;
        });
    }
}

演示: http//jsfiddle.net/kv854c61/1/

您只需要像這樣循環數據屬性中的值即可。

for( var i - 0; i < series.length-1; i++){
  for( var j - 0; j < series[i].data.length-1; i++){
    var result = series[i].data[j][0] + series[i].data[j][1];
    series[i].data[j] = result;
  }
}

現在添加新的數據數組將很有意義,以免覆蓋

series[i].new_data[j] = result;

在這種情況下, Array.map非常有用:

// extracts the data entries of each item in the series
var data = series.map(function(item){ return item["data"]; });

function sum(point) {
    return point[0] + point[1];

    // in case point is of arbitrary dimension use Array.reduce:
    // return point.reduce(function(prev, cur){ return prev + cur; }, 0);
}

var sums = data.map(function(arr){
    return arr.map(function(point){
        return sum(point);
    });
});

// sums now contains an array of array of sums
// e.g. [[30600,60800,101100]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM