2013-02-26 123 views
2

array[time, value];我需要從這個二維數組的總和/價值總和?二維數組的總和

var array =[ 
    [1361824790262, 90.48603343963623], 
    [1361828390262, 500.18687307834625], 
    [1361831990262, 296.05108177661896], 
    [1361835590262, 423.1198309659958], 
    [1361839190262, 11.86623752117157], 
    [1361842790262, 296.38282561302185], 
    [1361846390262, 424.31847417354584], 
    [1361849990262, 100.07041704654694], 
    [1361853590262, 434.8605388402939], 
    [1361857190262, 434.8220944404602], 
    [1361860790262, 183.61854946613312] 
]; 
var sum = 0; 
//console.log(array.length); 
for (var i = 0; i < array.length; i++) { 
    //console.log(array[i]); 
    for (var j = 0; j < array[i].length; j++) { 
     console.log(array[j][i]); 
     sum += array[j][i]; 
    } 
} 
console.log(sum); 

Link for JsFiddle

回答

1

沒有必要進行兩個循環。這循環遍歷數組,併爲您提供每個時間/值對。如果每個時間值對都簡單地總結第一個索引(第二項)。

var sum = 0; 
for(var i=0;i<array.length;i++){ 
    console.log(array[i]); 
    sum += array[i][1]; 
} 
console.log(sum); 

輸出:

[1361824790262, 90.48603343963623] 
[1361828390262, 500.18687307834625] 
[1361831990262, 296.05108177661896] 
[1361835590262, 423.1198309659958] 
[1361839190262, 11.86623752117157] 
[1361842790262, 296.38282561302185] 
[1361846390262, 424.31847417354584] 
[1361849990262, 100.07041704654694] 
[1361853590262, 434.8605388402939] 
[1361857190262, 434.8220944404602] 
[1361860790262, 183.61854946613312] 
3195.7829563617706 
0
Sum_of_2d_array(arr) 
    { 
     int sum_time =0; 
     int sum_value=0; 

     for(i=0;i<arr.length;i++) 
     { 
      sum_time = sum_time + arr[i,0]; 
     } 
     print(sum_time); 

     for(i=0;i<arr.length;i++) 
     { 
      sum_value = sum_value + arr[i,1]; 
     } 
     print(sum_value); 
    } 

    If I understood your question correctly. I think this is what you want. 
0
var arr = [[1361824790262, 90.48603343963623], 
[1361828390262, 500.18687307834625], 
[1361831990262, 296.05108177661896], 
[1361835590262, 423.1198309659958], 
[1361839190262, 11.86623752117157], 
[1361842790262, 296.38282561302185], 
[1361846390262, 424.31847417354584], 
[1361849990262, 100.07041704654694], 
[1361853590262, 434.8605388402939], 
[1361857190262, 434.8220944404602], 
[1361860790262, 183.61854946613312]]; 

var sum = 0; 
for(var i=0;i<arr.length;i++){ 
    for(var j=0;j<arr[i].length;j++){ 
     sum += arr[i][j]; 
    } 
} 
console.log(sum); 

這是得到總的解決方案。我已經測試過了。

7

你的問題的標題暗示要總結二維陣列這裏是你會怎麼做:

array.reduce(function(a,b) { return a.concat(b) }) // flatten array 
    .reduce(function(a,b) { return a + b });  // sum 

要爲你做你的編輯清楚總結纔有價值部分更容易:

array.map(function(v) { return v[1] })   // second value of each 
    .reduce(function(a,b) { return a + b }); // sum 
+0

如果有兩個二維數組並添加它們就像在這裏,我已經創建了一個SO問題如何https://stackoverflow.com/questions/44850663/adding-two-dimensional-arrays-in-angular-javascript/ 44851623#44851623 – Praveen 2017-06-30 19:30:44