Javascript 返回并记录同一变量don';不匹配
我有一个名为bars的数组,其中包含进度条的活动id号。我希望遍历此数组以查找与其索引不匹配的第一个值(用于查找最低可用ID)。我的(显然不正确)解决方案如下:Javascript 返回并记录同一变量don';不匹配,javascript,arrays,Javascript,Arrays,我有一个名为bars的数组,其中包含进度条的活动id号。我希望遍历此数组以查找与其索引不匹配的第一个值(用于查找最低可用ID)。我的(显然不正确)解决方案如下: var bars = [0,1]; function getNewBarID(counter) { var i = counter || 0; //sets i to counter value if it exists, or to 0 if it doesn't if (bars[i] == i) { ++i;
var bars = [0,1];
function getNewBarID(counter) {
var i = counter || 0; //sets i to counter value if it exists, or to 0 if it doesn't
if (bars[i] == i) {
++i;
getNewBarID(i);
} else {
console.log(i);
return i;
}
}
getNewBarID();
当我运行这个(在节点控制台和chrome js控制台中)时,它将2
记录到控制台并返回undefined
,而它应该返回2
什么
编辑:当使用空数组运行函数时,它会返回并记录0
(更多内容!?)可能:
return getNewBarID(i);
但老实说,它应该是:
const newBar = bars.find((el,i) => el !== i) || bars.length; //newBar contains the result...
或者使用一个好的旧for循环再长一点:
function getNewBarID(){
let i = 0;
while(bars[i] === i) i++;
return i;
}
可能:
return getNewBarID(i);
但老实说,它应该是:
const newBar = bars.find((el,i) => el !== i) || bars.length; //newBar contains the result...
或者使用一个好的旧for循环再长一点:
function getNewBarID(){
let i = 0;
while(bars[i] === i) i++;
return i;
}
那是因为你第一次跑步
getNewBarID();
在哪里
这是真的。从那里您可以进行下一个调用,是的,但是第一个调用执行时没有返回值。您最终会得到一个返回值,但首先执行了两次,没有返回任何内容。只需在if案例中添加一个返回:
return getNewBarID(i);
那是因为你第一次跑步
getNewBarID();
在哪里
这是真的。从那里您可以进行下一个调用,是的,但是第一个调用执行时没有返回值。您最终会得到一个返回值,但首先执行了两次,没有返回任何内容。只需在if案例中添加一个返回:
return getNewBarID(i);
生活从来没有像你的解决方案那么简单:生活从来没有像你的解决方案那么简单:PDammit,总是太迟。该死,总是太迟。