【发布时间】:2021-12-03 18:36:59
【问题描述】:
问题来了:
“编写一个函数addingAllTheWeirdStuff,它将array2中所有奇数的总和添加到array1中10以下的每个元素。同样,addingAllTheWeirdStuff也应该将array2中所有偶数的总和添加到array1中超过10的元素。
奖励:如果 array2 中的任何元素大于 20,则将 array1 中的每个元素加 1。"
我得到了第一部分的工作。我似乎无法弄清楚如何让第二部分工作。这是我尝试过的:
function addingAllTheWeirdStuff(array1, array2){
// ADD CODE HERE
let sumOdd = 0;
let sumEven = 0;
for (let i = 0; i < array2.length; i++) {
if (array2[i] % 2 !== 0) {
sumOdd += array2[i];
} else {
sumEven += array2[i];
}
}
for (let i =0; i < array1.length; i++) {
if (array1[i] < 10) {
array1[i] += sumOdd;
} else if (array1[i] > 10) {
array1[i] += sumEven;
}
for (let i =0; i < array2.length; i++) {
if (array2[i] > 20) {
for (let i =0; i < array1.length; i++) {
array1[i] += 1;
return array1;
}
return array1;
}
}
return array1;
}
关于如何使问题的最后一部分起作用的任何建议?
提前致谢。
【问题讨论】:
-
您的代码有不平衡的大括号。这是要解决的第一件事......其次,在循环中
return是一个坏主意,因为这样就不会有任何其他循环的迭代。第三,为什么要嵌套循环?如果您是第一部分代码的作者,我不明白您是如何编写第二部分的,因为您应该使用相同的编码模式。 -
好的,我会检查大括号。我使用 return 是因为我不知道如何制作它,所以如果数组中只有一个项目超过 20,它只会向它添加 1 一次。这就是为什么我在找到第一个超过 20 的元素后使用 return 来返回数组。如果发现 array2 中的元素超过 20,则嵌套循环应该为数组中的每个元素加 1。
-
是的,但是嵌套循环没有循环。您在第一次迭代时退出它。从您的问题来看,尚不清楚
>20检查是否应该在原始值上,还是在值被第一阶段修改后的值上。 -
奖金对我来说有点不清楚。 “如果 array2 中的任何元素大于 20,则将 array1 中的每个元素加 1。” 这是否意味着对于 array2 中的 每个 元素>20 做 +1 或者如果有array2 > 20 中的一个或多个 元素是否只执行一次+1?
标签: javascript loops for-loop multiple-conditions