如果 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>
我正在为这样的对象做一个简单的 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>