为什么我不能用下划线*来做到这一点?
_.omit({ foo: [] }, _.isEmpty);
我期望一个空对象,即 {}
,但它总是返回似乎是未更改的源对象的副本。
_.omit
应该支持一个回调函数,它的第一个参数将是对象中一个项目的值(我不在乎键是什么,我只想删除值为空的键/值对)。
http://underscorejs.org/#omit
_.isEmpty
有一个参数,应该忽略任何其他参数。它似乎是 _.omit
回调的完美匹配。
http://underscorejs.org/#isEmpty
** 注意:我实际上使用的是下划线 API 的 lodash 实现 (v.2.4.1)。
最佳答案
该死的。我把问题写下来了,但我写的最后一行让我重新思考。我回到了http://underscorejs.org并打开浏览器控制台,并在那里运行我的代码片段。它按预期执行,返回一个空对象!
我用 lodash 3.0.1(两天前刚刚发布!)试了一下,它也能按预期工作。
我已经确认我无法让 lodash 2.4.1 的 _.omit
与任何谓词函数一起工作。
我猜 lodash 2.4.1 中有一个错误。那个版本稳定了很长一段时间,所以我确信它很普遍,我不会就此抛开我的问题。考虑到 _.omit
背后的抽象级别,我怀疑这个错误也会影响其他功能。我希望这对某人有所帮助。
关于javascript - 下划线/lodash : how to filter out empty properties?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28267852/