我试图理解这个条件循环来总结两个数组中的每个元素,但我偶然发现了后一部分,我不明白在那里要实现什么。
你能给我解释一下吗?
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/