Underscore: 过滤对象可能会返回一个对象

创建于 2011-11-01  ·  8评论  ·  资料来源: jashkenas/underscore

你好,

这是过滤器的常见用例。 给定

a = {35: true, 45: true, 55: false}

一个人想过滤并只取回值为真的对:

_.filter(a, function(val, key) {
  val === true;
});
// => {35: true, 45: true}

目前,诸如 filter push(value) 这样的函数可以得到一个数组。

是否有任何简单的方法可以通过解决方法来实现这一点,如果没有,您是否会考虑根据我们提供的是对象还是列表来切换返回的类型?

change wontfix

最有用的评论

jk,刚刚看到_.pick非常适合我的用例

所有8条评论

+1

我只需要同样的东西,这个问题是我在搜索时得到的第二个谷歌 git。 使对象上的 _.filter 返回对象的唯一问题是向后兼容性......

filter是一个源自 ES5 的函数……我们当然不想破坏与规范的基本兼容性。

为了解决更大的问题:所有 Underscore.js 可枚举函数都可以接受对象或数组,并且都返回数组。 在这里打破一致性需要同时为所有功能完成,而不仅仅是其中一个。 当前的 API 允许您编写 Underscore 函数,而不必担心输入类型。

我已经为带有 key/val 持久性的对象的这个 mixin gist 跟踪映射函数添加了过滤器和拒绝函数:

https://gist.github.com/3430971

+1

+1 你们可以一次添加一个_.filterObj (等),类似于_.mapObj吗?

jk,刚刚看到_.pick非常适合我的用例

@jtfairbank正是我所需要的,也许是大多数人来这里寻找“过滤”对象并创建对象时所需要的。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

haggholm picture haggholm  ·  8评论

danilopolani picture danilopolani  ·  5评论

jezen picture jezen  ·  8评论

sky0014 picture sky0014  ·  8评论

afranioce picture afranioce  ·  8评论