簡體   English   中英

二維數組內各個數組的總和

[英]Sum of individual arrays inside two-dimensional array

當談到在二維數組中加入各個數組的數量時,我就是我的智慧。 例如:

var arrArrays = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];

function sumArray(numberArray) {
  var sum = 0;
  numberArray.forEach(function(a,b) {
    sum = a + b;
  });
  return sum;
}

函數sumArray可以成功地加總並返回常規(一維數組)的總和,但是當傳遞arrArrays時,它返回一個隨機值的數組。

我需要能夠返回多個數組在另一個數組中的總和。 原因是因為我需要這個下一個函數來調用sumArray():

function sumSort(arrayOfArrays) {
  arrayOfArrays.sort(function(a,b) {
    var sumArray1 = sumArray(a);
    var sumArray2 = sumArray(b);
    if (sumArray1 < sumArray2) {
      return -1;
    } else {
      return 0;
    }
  });
}

理論上,sumSort()將根據每個數組內的數字之和(從最高到最低)對數組進行排序。

任何提示都會很棒。 先感謝您!

此方法將允許您處理任何嵌套深度的數組。 首先,你將扁平化內部數組 ,然后像往常一樣對它們求和。 如果您還希望它處理非嵌套數組,則可以在第一級添加檢查,如此問題所示。

var arrs = [[[[1]], [2, 3]], [4, 5, 6], [7, 8, 9]];
//https://stackoverflow.com/a/15030117/1470607
function flatten(arr) {
    return arr.reduce(function(flat, arr) {
        return flat.concat(Array.isArray(arr) ? flatten(arr) : arr);
    }, []);
};
var sums = arrs.map(function(arr) {
    return flatten(arr).reduce(function(sum, item) {
        return sum + item;
    });
}); //[6, 15, 24]

暫無
暫無

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

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