如果 iteratee 函数 returns false,Lodash forEach 不会遍历整个对象

Lodash forEach not iterating over whole object if iteratee function returns false

我正在为这样的对象做一个简单的 lodash forEach -

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

https://jsfiddle.net/abduxr0n/

这将 a 作为输出而不是 a b。我错过了什么吗? lodash forEach 是否应该在整个对象上 运行 而不管 iteratee 函数的 return 值?我错过了什么?请帮忙。

您正在从循环中返回 false,这会使执行短路:

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

Iteratee functions may exit iteration early by explicitly returning false.

JavaScript 中 return 语句的全部目的是退出一个函数,return 从函数中获取一个值。使用 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>