javascript - 对 2 个数组中的每个值求和

标签 javascript arrays sum element

我试图理解这个条件循环来总结两个数组中的每个元素,但我偶然发现了后一部分,我不明白在那里要实现什么。

你能给我解释一下吗?

function Arrays_sum(array1, array2) {
    var result = [];
    var ctr = 0;
    var x = 0;

    if (array1.length === 0)
        return "array1 is empty";
    if (array2.length === 0)
        return "array2 is empty";

    while (ctr < array1.length && ctr < array2.length) {
        result.push(array1[ctr] + array2[ctr]);
        ctr++;
    }

    if (ctr === array1.length) //I don't understand from here onwards
    {
        for (x = ctr; x < array2.length; x++) {
            result.push(array2[x]);
        }
    } else {
        for (x = ctr; x < array1.length; i++) {
            result.push(array1[x]);
        }
    }

    return result;
}

最佳答案

让我们假设以下两个数组及其“总和”:

Array 1: 1  2  3  4   5  6   7   8  9 [length = 9]
Array 2: 2  4  6  8   2  4   6        [length = 7]

Sum    : 3  6  9  12  7  10  13  8  9 [length = 9]

请注意最后两项。总和等于第一个数组的值,因为第二个数组不包含如此数量的值。

Array 1: 1  2  3  4   5  6   7   8  9
Array 2: 2  4  6  8   2  4   6   ?  ?

这正是算法的作用:

1) 虽然两个数组的数字均为 i索引 - 总结。

ctr    : !  !  !  !   !  !   !  \|/   [ ctr   = 7 (remember: 0-based indexes)]       
Array 1: 1  2  3  4   5  6   7   8  9 [length = 9]
Array 2: 2  4  6  8   2  4   6        [length = 7]

Sum    : 3  6  9  12  7  10  13  

这里while (ctr < array1.length && ctr < array2.length)条件中断于 ctr < array2.length .

此外,支票ctr == array2.length返回 true 意味着数组 2 已经结束,我们需要继续迭代 array1 .

for (x = ctr; x < array1.length; i++) {
    result.push(array1[x]);
}

2) 当剩余数组尚未结束时 - 添加其中的值。

x    :                           !  !  \|/ [  x    = 10]                     
Array 1: 1  2  3  4   5  6   7   8  9      [length = 9 ]
Array 2: 2  4  6  8   2  4   6             [length = 7 ]

Sum    : 3  6  9  12  7  10  13  8  9

关于javascript - 对 2 个数组中的每个值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30930697/

相关文章:

mysql - SQL 选择表中的一些行,以便它们总和为某个值

jquery - 简单的jquery求和

javascript - d3 图标从节点上飘离

javascript - CKeditor v4 在同一页面上具有 RTL 和 LTR

arrays - Swift:将文本字段保存在数组中

c++ - 使用除法技术求数组的最大公约数

sqlite - 为什么这个触发器不阻止在 sqlite 中插入行?

javascript - 在另一个文件中带有数组的函数中未定义

c# - JSON post 在 IE 中有效,在 FF 中无效

arrays - Swift:将一组字典扁平化为一个字典