我有一个Clojure Lazy Sequence:
{
{:keyOne 123, :keyTwo "TestVal"}
{:keyOne 456, :keyTwo "Value2"}
{:keyOne 789, :keyTwo "TestVal"}
}
我想获取具有给定密钥的特定值的地图,例如我希望所有值为"TestVal"
的地图都为:keyTwo
值,因此我希望结果中包含第一个和第三个元素。
我认为我应该能够使用filter
来解决这个问题,但我已经查看了我能找到的所有示例,他们从不使用这样的嵌套结构。
答案 0 :(得分:5)
{{: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)
它并不关心输入序列是懒惰还是非懒惰(渴望)。