在数组中查找项目的索引

时间:2019-07-09 17:59:50

标签: javascript function

我正在编写一个函数,该函数带有两个参数,一个数组和一个数字,如果数组中存在数字,则返回该数字的索引。我遇到的问题是我的代码没有“ 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”。

2 个答案:

答案 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);