下划线/ lodash:如何过滤掉空属性?

时间:2015-02-01 21:03:17

标签: javascript underscore.js lodash

为什么我不能用下划线*?

_.omit({ foo: [] }, _.isEmpty);

我期待一个空对象,即{},但它总是返回看似未更改的源对象的副本。

_.omit应该支持一个回调函数,它的第一个参数将是对象中一个项的值(我不在乎键是什么,我只想删除键/值对,其中值为空)。 http://underscorejs.org/#omit

_.isEmpty只有一个参数,应该忽略其他参数。这似乎是_.omit回调的完美匹配。 http://underscorejs.org/#isEmpty

**注意:我实际上正在使用下划线API的lodash实现(v.2.4.1)。

1 个答案:

答案 0 :(得分:4)

该死。我写了这个问题,但是我写的最后一行让我再次思考。我回到http://underscorejs.org并打开浏览器控制台,然后在那里运行我的代码片段。它按预期执行,返回一个空对象!

我尝试使用lodash 3.0.1(仅在两天前发布!),它也按预期工作。

我已经确认我无法让lodash 2.4.1' _.omit使用任何谓词函数。

我猜这是lodash 2.4.1中的一个错误。那个版本稳定了很长一段时间,所以我确信它很普遍,我不会丢掉我的问题。鉴于_.omit背后的抽象级别,我怀疑这个bug也会影响其他功能。我希望这有助于某人。