二维数组中单个数组的和

Sum of individual arrays inside two-dimensional array

本文关键字:数组 单个 二维数组      更新时间:2023-09-26

当涉及到在二维数组中添加单个和时,我已经束手无策了。例如:

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可以成功地将& &;返回常规(一维数组)的和,但当传递arrayarrays时,它返回一个由随机值组成的数组。

我需要它能够返回另一个数组中有多少数组的和。原因是我需要下面这个函数调用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]