Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Самописная функция every не работает, почему? (https://javascript.ru/forum/misc/80959-samopisnaya-funkciya-every-ne-rabotaet-pochemu.html)

tolstj 02.09.2020 10:29

Самописная функция every не работает, почему?
 
Даны две функции: аналоги метода every у массивов. Первую написал я для самообучения в надежде что я понимаю что делаю, а второй вариант из учебника eloquent javascript.
Почему мой вариант не работает, всегда выдает true?

// Функция 1 - моя (работает не правильно)
function every(array, predicate) {
    array.forEach(function(element) {
        if (!predicate(element)) return false;
    });
    return true;
}


// Функция 2 - из книги (работает правильно)
function every(array, predicate) {
    for (let element of array) {
        if (!predicate(element)) return false;
    }
    return true;
}


// Применение
console.log(every([NaN, NaN, NaN], isNaN));
// → true
console.log(every([NaN, NaN, 4], isNaN));
// → false

рони 02.09.2020 12:42

Цитата:

Сообщение от tolstj
Почему мой вариант не работает,

потому что в forEach нет return

voraa 02.09.2020 16:05

Цитата:

Сообщение от tolstj
// Функция 2 - из книги (работает правильно)
function every(array, predicate) {
    for (let element of array) {
        if (!predicate(element)) return false;
    }
    return true;
}

Она не работает правильно!!!
let ar = [1,2,,4,,6];
let pred = (x) => x;

let res1 = ar.every(pred)

function every(array, predicate) {
    for (let element of array) {
        if (!predicate(element)) return false;
    }
    return true;
}
let res2 = every (ar, pred)
alert (res1+' '+res2)


Часовой пояс GMT +3, время: 21:55.