【发布时间】:2021-10-25 00:34:55
【问题描述】:
输入是一个数组 ints [11, 2, 7, 8, 4, 6] 和整数 s 10。功能是输出一个数组,其中包含一对来自 int 的两个数字,它们首先形成 10 的和. 所以这里的输出应该是[2, 8],因为2 + 8 = 10。为什么输出的是空数组呢? arrResults 是在嵌套的 for 循环中更新的,为什么在最后的 return 语句之后没有显示出来呢?
function sumPairs(ints, s) {
let arrResults = [];
let sumOfTwo;
for (i = 0; i < ints.length; i++) {
for (j = 0; j < ints.length; j++) {
sumOfTwo = ints[i] + ints[j];
if (sumOfTwo === s) {
arrResults.push(ints[i]);
arrResults.push(ints[j]);
break;
}
}
if (arrResults !== []) {
break;
}
}
return arrResults;
}
console.log(sumPairs([11, 2, 7, 8, 4, 6], 10));
【问题讨论】:
-
在 for 循环中我认为你应该这样做
let i=0和let j = 0 -
我刚试过,但没有任何区别。
-
你的第二个循环是错误的,你不应该从零开始。
-
只要找到 sumoftwo === s 就可以返回 [ints[i],ints[j]] 而不是生成结果数组
-
arrResults !== []不是查看数组是否有元素的方式,因此您的问题
标签: javascript for-loop scope nested-loops