相当于coffeescript中的ruby哈希#拒绝

相当于coffeescript中的ruby哈希#拒绝,coffeescript,Coffeescript,与ruby的Hash#reject/delete_if方法最接近的等效方法是什么 {a:1, b:2, c:3, d:4}.reject { |k,v| v > 2 } => {:a=>1, :b=>2} 这个快速版本使用键,值为,但它并不优雅,并且缺乏传递任意条件的能力(如块或其他) 下划线有一个类似的\.ommit方法,但只对键起作用。不幸的是,CoffeeScript理解总是生成数组。可以使用下划线的方法将[键,值]数组转换为对象: obj = {a:1, b:2

与ruby的Hash#reject/delete_if方法最接近的等效方法是什么

{a:1, b:2, c:3, d:4}.reject { |k,v| v > 2 }
=> {:a=>1, :b=>2}
这个快速版本使用
键,值为
,但它并不优雅,并且缺乏传递任意条件的能力(如块或其他)


下划线有一个类似的
\.ommit
方法,但只对键起作用。

不幸的是,CoffeeScript理解总是生成数组。可以使用下划线的方法将
[键,值]
数组转换为对象:

obj = {a:1, b:2, c:3, d:4}
_.object([k, v] for k, v of obj when v <= 2) # -> {a:1, b:2}

您可以将一个函数传递给
过滤器
过滤器(obj,(k,v)->…)
),然后
结果[k]=v,当fn(v)
过滤器
内部时,参数的k,v。
obj = {a:1, b:2, c:3, d:4}
_.object([k, v] for k, v of obj when v <= 2) # -> {a:1, b:2}
reject = (obj, predicate) ->
  res = {}
  res[k] = v for k, v of obj when not predicate k, v
  res

reject {a:1, b:2, c:3, d:4}, (k, v) -> v > 2 # -> {a:1, b:2}