gpt4 book ai didi

javascript - 将数组拆分为 block 并对每个索引求和,然后合并到另一个数组中

转载 作者:行者123 更新时间:2023-11-28 12:21:07 24 4
gpt4 key购买 nike

我将一个数组拆分为两个数组 arr1arr2。然后我想对这些值求和并绑定(bind)到另一个数组,如 arr3。我怎样才能做到这一点?

var arr1 = [1,2,3,4]
var arr2 = [2,3,4,4]

var arr3 = [3,5,7,8]

这对于静态数组来说效果很好,但我的问题是

var TotalOfArray = [];
var temparray = [];

for (i = 0, j = x.length; i < j; i += chunk) {

temparray = x.slice(i, i + chunk);

if (temparray.length == chunk) {

console.log("before loop: "+TotalOfArray.length);

if (TotalOfArray.length == 0) {

for (i in temparray) {
TotalOfArray[i] = temparray[i];
}

console.log("after loop: "+TotalOfArray.length);

} else {

for (i in temparray) {
TotalOfArray[i] = TotalOfArray[i] + temparray[i];
}

}

}

}

如您所见,x 将是我拼接到 temparray 数组中的主数组,因此每次它将与数组长度 31 进行拼接,并且比我想要的 sum, chunk =截至目前 31 名。但它不会进入 ELSE 部分。

最佳答案

等长数组:

这只是一个更简单的版本,假设两个数组的长度相等。对于适用于可变长度数组的解决方案,请进一步阅读。

var arr1 = [1, 2, 3, 4];
var arr2 = [2, 3, 4, 4];

var arr3 = arr1.map(function(a, i) {
return a + arr2[i];
});

console.log(arr3);

可变长度数组:

无论如何,这将是一个更强大的解决方案。但它会找到其中值最多的数组,并将其用于 map 。然后,如果在另一个数组中发现未定义的值,它将使用 0 作为另一个数字。

var arr1 = [1, 2, 3, 4];
var arr2 = [2, 3, 4, 4, 5];

var sorted = [arr1, arr2].sort((a, b) => b.length - a.length);

var arr3 = sorted[0].map(function(a, i) {
return a + (sorted[1][i] || 0);
});

console.log(arr3);

关于javascript - 将数组拆分为 block 并对每个索引求和,然后合并到另一个数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38273533/

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