Jdv*_*Jdv 2 clojure lazy-sequences
我有一个Clojure Lazy Sequence:
{
{:keyOne 123, :keyTwo "TestVal"}
{:keyOne 456, :keyTwo "Value2"}
{:keyOne 789, :keyTwo "TestVal"}
}
Run Code Online (Sandbox Code Playgroud)
我想获得具有给定键的特定值的映射,例如,我想要所有具有值"TestVal"作为:keyTwo值的映射,因此我期望结果中的第一个和第三个元素.
我假设我应该能够解决这个问题filter,但我已经查看了我能找到的所有示例,他们从不使用这样的嵌套结构.
{{:keyOne 123, :keyTwo "TestVal"}
{:keyOne 456, :keyTwo "Value2"}
{:keyOne 789, :keyTwo "TestVal"}}
Run Code Online (Sandbox Code Playgroud)
在clojure中,这个表达没有意义,这不是懒惰的地图序列.为了充分回答你的问题,我认为输入数据如下:
(def input '({:keyOne 123, :keyTwo "TestVal"}
{:keyOne 456, :keyTwo "Value2"}
{:keyOne 789, :keyTwo "TestVal"}))
Run Code Online (Sandbox Code Playgroud)
我们可以像这样表达你的目的:
(filter (fn [m] (= "TestVal" (:keyTwo m))) input)
Run Code Online (Sandbox Code Playgroud)
它不关心输入序列是懒惰还是非懒惰(渴望).