Javascript 二维数组中单个数组的和

Javascript 二维数组中单个数组的和,javascript,arrays,sorting,sum,Javascript,Arrays,Sorting,Sum,当涉及到二维数组中的单个数组和的相加时,我已经束手无策了。例如: 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可以成功地累加并返回一个常规数组(一维数组)的和,但当传递

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

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():

函数sumSort(arrayOfArrays){
arrayOfArrays.sort(函数(a,b){
var sumArray1=sumArray(a);
var sumArray2=sumArray(b);
if(sumArray1
理论上,sumSort()将根据每个数组中的数字之和(从最高到最低)对数组进行排序


任何提示都会很棒。提前谢谢你

此方法允许您处理任何嵌套深度的数组。首先,你要像往常一样计算它们的总数。如果还希望它处理非嵌套数组,可以在第一级添加检查,如图所示


我不知道你认为回调的参数是什么,但它们不是你认为的那样。在你的函数中,你是最后一个元素+最后一个元素的索引的总和,因为
b
是索引。@Mr.Llama:OPs代码不起作用。@Mr.Llama-代码对我来说似乎不起作用。结果是
“7,8,92”
“函数sumArray可以成功地累加并返回常规(一维数组)的和,但当传递数组时,它返回一个随机值数组。”基于这个问题,似乎您实际上不想将数组数组传递给
sumArray
,但是一系列的数字。或者您正在将数字数组的数组传递给
sumSort
?对。因此,您实际上是将包含数字的数组传递给
sumArray
(因为这是
arrarys
所包含的内容),而不是数组数组。为什么你认为
sumssort
不起作用?我的意思是已经提到了一些问题
forEach
不是这样工作的,您的排序回调永远不会返回
1
。排序回调基本上是说“如果
sumArray1
不小于
sumArray2
,那么它们是相等的”,这当然不是
sumArray1=30
sumArray2=10
的情况。看一看。我不知道为什么我没有看地图()。这很有道理。非常感谢。
function sumSort(arrayOfArrays) {
  arrayOfArrays.sort(function(a,b) {
    var sumArray1 = sumArray(a);
    var sumArray2 = sumArray(b);
    if (sumArray1 < sumArray2) {
      return -1;
    } else {
      return 0;
    }
  });
}
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]