Lodash forEach не выполняет итерацию по всему объекту, если функция iteratee возвращает false - PullRequest
0 голосов
/ 07 января 2019

Я делаю простой lodash forEach для такого объекта -

_.forEach({a:'a', b:'b'}, (value) => {
    console.log(value);
    return false;
})

https://jsfiddle.net/abduxr0n/

Это дает a как вывод вместо a b. Я что-то пропустил? Разве lodash forEach не должен запускаться для всего объекта независимо от возвращаемого значения функции iteratee? Что мне не хватает? Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Целью оператора return в JavaScript является выход из функции и возвращение значения из функции. С циклом forEach, либо в простом JS, либо в lodash, вам не нужен оператор return для продолжения цикла - функция выполняется, а затем начинается следующая итерация. Удаление вашего оператора return заставит ваш код работать:

 

_.forEach({ a: "a", b: "b" }, value => console.log(value));
 

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.core.js"></script>
0 голосов
/ 07 января 2019

Вы возвращаете false из цикла, который замыкает выполнение:

https://lodash.com/docs/4.17.11#forEach

Итеративные функции могут выходить из итерации раньше, явно возвращая false.

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