我有一个Clojure Lazy序列:
{ {:keyOne 123, :keyTwo "TestVal"} {:keyOne 456, :keyTwo "Value2"} {:keyOne 789, :keyTwo "TestVal"} }
我想得到对于给定键具有特定值的映射,例如,我想要所有具有该值的映射 "TestVal" :keyTwo 值,所以我期望结果中的第一个和第三个元素。
"TestVal"
:keyTwo
filter ,但我浏览了所有可以找到的示例,它们从未使用过这样的嵌套结构。
filter
{{:keyOne 123, :keyTwo "TestVal"} {:keyOne 456, :keyTwo "Value2"} {:keyOne 789, :keyTwo "TestVal"}}
在clojure中,这个表达式没有意义,这不是懒惰的映射序列。 为了充分回答您的问题,我认为输入数据如下:
(def input '({:keyOne 123, :keyTwo "TestVal"} {:keyOne 456, :keyTwo "Value2"} {:keyOne 789, :keyTwo "TestVal"}))
我们可以这样表达您的意图:
(filter (fn [m] (= "TestVal" (:keyTwo m))) input)
它不在乎输入序列是否懒惰(渴望)。