gpt4 book ai didi

javascript - 二维数组中各个数组的总和

转载 作者:行者123 更新时间:2023-11-29 15:32:49 25 4
gpt4 key购买 nike

在将二维数组中的数组的个别 总和相加时,我束手无策。例如:

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() 将根据每个数组中数字的总和(从最高到最低降序)对数组进行排序。

任何提示都会很棒。提前致谢!

最佳答案

此方法将允许您处理任何嵌套深度的数组。首先你会flatten the inner arrays然后像往常一样对它们求和。如果你还想让它处理非嵌套数组,可以在第一层加一个检查,如图in this question .

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]

关于javascript - 二维数组中各个数组的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32853762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com