我正在编写一个函数,该函数带有两个参数,一个数组和一个数字,如果数组中存在数字,则返回该数字的索引。我遇到的问题是我的代码没有“ else”部分就可以正确返回,但是,当我添加有关返回“ -1”的代码时,它不能正常工作,并且好像编译器只采用了“ return- 1”,无论我使用什么参数。谁能帮我解决这个问题?
function search(arr, item) {
for(let i=0; i<arr.length; i++){
if(item===arr[i]){
return i;
}else if(item!==arr[i]){
return -1;
}
}
}
如果第一个数组参数中存在“ item”参数的索引,它总是给我输出“ -1”。
答案 0 :(得分:4)
您需要在循环外返回-1,因此,如果它在整个循环中一直未找到任何内容,则仅返回-1。如果在此之前找到了东西,它将返回索引:
function search(arr, item) {
for(let i=0; i<arr.length; i++){
if(item===arr[i]){
return i;
}
}
return -1;
}
console.log(search([1, 2, 3], 5))
console.log(search([1, 2, 3], 2))
答案 1 :(得分:2)
依次考虑。
假设您的数组为[1, 2, 3]
,并且您正在寻找3。
该函数在数组上循环。所考虑的第一个值是1。它使else
块处于活动状态,并在考虑其他值之前返回-1。记住return表示函数执行结束。
在任何情况下,您都可以大大简化该功能:
return arr.indexOf(item);