我试图用两个参数创建一个函数,一个用于数组(ary),第二个用于在数组内搜索的名称。
但是,我不明白为什么第一个代码不起作用而第二个代码却不起作用。
有人可以解释一下吗?
// wrong code
var fruit = ['banana', 'apple', 'cherry', 'watermelon'];
var food = ['pizza', 'rice', 'cheese', 'potato'];
var search = function(ary, name) {
for (var i = 0; i < ary.length; i++) {
if (name == ary[i]) {
return name + " was found!";
} else {
return name + " was not found";
}
}
};
search(food, 'potato');
//"potato was not found"
// right code
var fruit = ['banana', 'apple', 'cherry', 'watermelon'];
var food = ['pizza', 'rice', 'cheese', 'potato'];
var search = function(ary, name) {
for (var i = 0; i < ary.length; i++)
if (name == ary[i])
return name + " was found!";
return name + " was not found";
};
search(food, 'potato');
//"potato was found!"
谢谢!
for (var i = 0; i < ary.length; i++)
if (name == ary[i])
return name + " was found!";
return name + " was not found";
是相同的:
for (var i = 0; i < ary.length; i++) {
if (name == ary[i]) {
return name + " was found!";
}
}
return name + " was not found";
它false
遍历数组中的所有项目后返回。在您提供的错误代码中,它仅检查第一项是否等于,name
因为在循环内,无论是否找到name
它,您都将返回(因此,如果第一项等于它,则将返回true
;如果未找到,则将返回false
)因此,1
将不会检查来自索引的项目,因为该函数已经返回。
注意:您可以在JS中使用默认的搜索功能indexOf
:
var search = function(ary, name) {
if(ary.indexOf(name) != -1) // index is -1 (not valid) then it's not found
return name + " was found";
else
return name + " was not found";
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句