无法获取[{“foo”},{“bar”},{},{}] |>过滤空即可工作

时间:2014-03-11 08:00:47

标签: prelude.ls

这有效:
[1 to 10] |> filter (> 4) |> console.log #[ 5, 6, 7, 8, 9, 10 ]

这有效: empty {} #true

但这不是:

[{"foo"}, {"bar"}, {}, {}] |> filter empty |> console.log # [ { foo: 'foo' }, { bar: 'bar' }, {}, {} ]

[{"foo"}, {"bar"}, {}, {}] |> map (-> console.log (empty it) ) #true true true true 这是空的问题吗?

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

我目前的解决方法是实现自己的empty

empty = (obj)->
  Object.keys(obj).length is 0

答案 1 :(得分:0)

您需要对您正在使用的输入类型使用适当的empty函数,在这种情况下,请使用Obj.empty。您使用的empty来自List.empty。在对象上使用它应该是错误而不是当前发生的错误。

[{"foo"}, {"bar"}, {}, {}] |> filter Obj.empty