循环的简单Javascript在第一次迭代后停止



我读过很多其他有类似问题的帖子,但仍然不明白为什么这篇文章很奇怪。我试着做了try/catch,但没有任何错误报告。数组实际上是100+,但在本例中会缩小范围。它在搜索数组中的第一个项时工作,但在那之后,它在一次迭代尝试后失败。我打印出了数组的长度,可以看到数组的长度超过了100。

编辑:我应该注意,这是唯一使用var k的地方。

function main(){
var list = [["feature 123", 5.0], ["feature 234", 38.0], ["feature 345", 38.0]];
var search = "feature 234";
var a = getIndexx(list, search);
}
function getIndexx(array, str) {
for(var k=0; k < array.length; k++) {
if(array[k][0] === str) {
return k;
} else {
return -1
}
}
}

您在for循环中return -1,这意味着如果它在第一个索引上找到匹配项,它将返回0,否则它将立即返回-1。您希望移动return -1,使其位于for循环之后,因此如果没有找到匹配项,则返回-1。

您不需要else条件。仅当条件有效时,才希望返回找到的索引。

如果在循环时没有找到匹配的值,则返回-1

function main() {
var list = [
["feature 123", 5.0],
["feature 234", 38.0],
["feature 345", 38.0]
];
var search = "feature 234";
var a = getIndexx(list, search);
console.log(a); // 1
}
function getIndexx(array, str) {
for (var k = 0; k < array.length; k++) {
if (array[k][0] === str) {
return k;
}
}
return -1; // Should be the default condition
}
main();

最新更新