【发布时间】:2020-11-20 09:07:46
【问题描述】:
我目前正在尝试创建一个从随机数组中查找两个数字并找出哪两个加起来等于给定数字的函数。它只需要告诉我这两个数字在什么索引上。 我最好的尝试如下,但我无法解决:
function numbers([N], sum) {
x = 0;
y = N.length - 1;
while (x < y) {
if (N[x] + N[y] == sum)
return true;
else if (N[x] + N[y] < sum)
x++;
return false
}
console.log(numbers([5, 2, 1, 9, 15], 6))
所以如果我在这里记录最后一位,我希望它给我索引 0 和 2,因为它们加起来是 6。 希望这是有道理的。我是编码新手,并且已经用谷歌搜索了其中的大部分内容。 提前致谢
【问题讨论】:
-
你确定要解构数组
[N]以获取第一项吗? -
如果匹配条件的数字不止一对(例如
[5,2,1,9,15,4])或数组中有重复数字(例如[5,2,1,9,15,1])怎么办? -
是的,你需要
numbers(N, sum)或N最终会是 5,而不是整个数组。我也不确定你的else if;这两个数字的总和为sum,或者不是;这里不需要else ifs。您也没有测试每一对;您必须使用两个嵌套的 for 循环来遍历两个数字的每个可能配对。 -
您的代码肯定也达到了返回值之一,因此只进行了一次测试,然后函数退出。看看奇怪的缩进,
return false不受else if测试。
标签: javascript arrays function add