Добрый день! Подскажите пожалуйста как решить вот такую задачу при помощи рекурсии:

Подскажите пожалуйста как решить вот такую задачу при помощи рекурсии: Сделайте функцию inArray('hello', ['helloo', hello', 'hihi']), которая определяет, есть в массиве элемент с заданным текстом или нет. Функция первым параметром должна принимать текст элемента, а вторым - массив, в котором ищем. Функция должна вернуть true или false. вам поможет метод splice)

function inArray(str,mass){
    for (let i = 0; i <= mass.length - 1; i ++){
        if(str !== mass[i]){
            mass.splice(0,1);
            inArray(str,mass);
        }
        else return true;
    }
}

console.log(inArray('hello', ['helloo', 'hello', 'hihi']));

Ответы (2 шт):

Автор решения: vsemozhebuty

Вам осталось добавить return для рекурсивного вызова и return на тот случай, если все элементы перебраны и ничего не нашлось (то есть — функция получила пустой массив и цикл не был запущен):

function inArray(str, mass){
    for (let i = 0; i <= mass.length - 1; i++){
        if(str !== mass[i]){
            mass.splice(0, 1);
            return inArray(str, mass);
        }
        else return true;
    }
    return false;
}

console.log(inArray('helloo', ['helloo', 'hello', 'hihi']));
console.log(inArray('hello', ['helloo', 'hello', 'hihi']));
console.log(inArray('hihi', ['helloo', 'hello', 'hihi']));
console.log(inArray('42', ['helloo', 'hello', 'hihi']));

→ Ссылка
Автор решения: Vlad Brusensky
function inArray(str, arr) {
    if ( arr.length === 0 ) 
        return false;
    if ( arr[0] !== str ) {
        return inArray( str, arr.splice(1,arr.length - 1) ); 
    }
    else
        return true;
}
→ Ссылка