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

循环的简单Javascript在第一次迭代后停止,javascript,Javascript,我读过很多有类似问题的帖子,但仍然不明白为什么这篇文章很奇怪。我尝试了尝试/捕获,但没有报告任何错误。数组实际上是100+,但在示例中缩小了范围。它在搜索数组中的第一个项时起作用,但在此之后,它在一次迭代尝试后失败。我打印出了数组长度,它看到数组的长度超过了100 编辑:我应该注意,这是唯一使用var k的地方 function main(){ var list = [["feature 123", 5.0], ["feature 234", 38.0

我读过很多有类似问题的帖子,但仍然不明白为什么这篇文章很奇怪。我尝试了尝试/捕获,但没有报告任何错误。数组实际上是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
     }
  }
}
函数main(){
变量列表=[“功能123”,5.0],“功能234”,38.0],“功能345”,38.0];
var search=“功能234”;
var a=getIndexx(列表,搜索);
}
函数getIndexx(数组,str){
for(var k=0;k
在for循环中返回-1
,这意味着如果它在第一个索引中找到匹配项,它将返回
0
,否则它将立即返回
-1
。您希望移动
返回-1,使其位于for循环之后,因此如果未找到匹配项,则返回-1。

您不需要
else
条件。如果条件有效,您只希望返回找到的索引

如果循环时未找到匹配值,则返回
-1

函数main(){
变量列表=[
[“功能123”,5.0],
[“功能234”,38.0],
[“功能345”,38.0]
];
var search=“功能234”;
var a=getIndexx(列表,搜索);
console.log(a);//1
}
函数getIndexx(数组,str){
for(var k=0;kmain()你回到for循环中,这就打破了它。天哪,我觉得自己像个白痴。非常感谢。一旦它允许我,我会把它标记为答案。