Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.09.2020, 10:29
Новичок на форуме
Отправить личное сообщение для tolstj Посмотреть профиль Найти все сообщения от tolstj
 
Регистрация: 02.09.2020
Сообщений: 4

Самописная функция 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

Последний раз редактировалось tolstj, 02.09.2020 в 10:46. Причина: Уточнение заголовка, уточнение оформления
Ответить с цитированием
  #2 (permalink)  
Старый 02.09.2020, 12:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от tolstj
Почему мой вариант не работает,
потому что в forEach нет return
Ответить с цитированием
  #3 (permalink)  
Старый 02.09.2020, 16:05
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от 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)

Последний раз редактировалось voraa, 02.09.2020 в 16:15.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему некорректно работает оператор instanseof? FunnyCat Общие вопросы Javascript 3 29.08.2018 18:05
Не работает console.log.apply(this,arguments) - Почему? Почемучкин Javascript под браузер 9 31.10.2014 17:17
Callback работает не так как я от него жду singaporian Общие вопросы Javascript 3 14.08.2013 00:42
способы организации кода melky Общие вопросы Javascript 17 01.10.2011 22:57
Как работает обработчик в файле, подгруженном AJAX SweetySugar AJAX и COMET 1 20.08.2011 17:17