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

时间:2016-07-08 18:50:49

标签: javascript jquery

我将数组拆分为两个数组arr1& arr2。然后我想总结这些值并绑定到另一个数组,如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拼接而不是我想要求和,chunk = 31现在。但它不会进入ELSE部分。

4 个答案:

答案 0 :(得分:4)

等长阵列:

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

&#13;
&#13;
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);
&#13;
&#13;
&#13;

可变长度数组:

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

&#13;
&#13;
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);
&#13;
&#13;
&#13;

答案 1 :(得分:1)

使用// create your style here Style style = new Style(); style.BackColor = System.Drawing.Color.Aqua; // apply style to each one comboBox1.Style = style; comboBox2.Style = style; comboBox3.Style = style; 循环:

&#13;
&#13;
for
&#13;
&#13;
&#13;

答案 2 :(得分:1)

如果两个数组的长度相等,则可以使用Array.prototype.map();

var data1 = [1,2,3,4],
    data2 = [2,3,4,4],
    result;
result = data1.map(function(value, i){
    return value + data2[i];
});
console.log(result);

答案 3 :(得分:0)

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

for (var i = 0; i < arr1.length; i++) {
    arr3.push(arr1[i] + arr2[i])
}

假设arr1和arr2具有相同的长度。