Нахождение индекса элемента в массиве - PullRequest
0 голосов
/ 09 июля 2019

Я писал функцию, которая принимает два аргумента, массив и число, и возвращает индекс числа, если оно присутствует в массиве. Проблема, с которой я сталкиваюсь, заключается в том, что мой код возвращается должным образом без части «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;
    }
}
}

Это всегда дает мне вывод «-1», когда он должен давать индекс аргумента «item», если он присутствует в первом аргументе массива.

Ответы [ 2 ]

4 голосов
/ 09 июля 2019

Вам нужно вернуть -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))
2 голосов
/ 09 июля 2019

Подумайте об этом последовательно.

Допустим, ваш массив равен [1, 2, 3], а вы ищете 3.

Функция зацикливается на массиве.Первое рассматриваемое значение равно 1. Это активирует блок else и возвращает -1, прежде чем другие значения будут даже рассмотрены.Помните, что возврат означает конец выполнения функции.

В любом случае вы можете значительно упростить функцию:

return arr.indexOf(item);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...