首页 > 解决方案 > 如何在 Clojure 中过滤向量列表?

问题描述

我是 Clojure 的新手,正在学习 Clojure 中各种数据结构的属性。在这里,我有一个向量列表,如下所示:

(["1" "Christiano Ronaldo" "Portugal" "35"] 
 ["2" "Lionel Messi" "Argentina" "32"] 
 ["3" "Zinedine Zidane" "France" "47"])

其中每个向量的第一个元素是 id。如何根据 id 从列表中过滤掉单个向量?例如,id = 1应该返回

["1" "Christiano Ronaldo" "Portugal" "35"]

我尝试在嵌套地图上做同样的事情:

(def footballers 
    [
        {:id 1 :name "Christiano Ronaldo" :country "Portugal" :age 35}
        {:id 2 :name "Lionel Messi" :country "Argentina" :age 32}
        {:id 3 :name "Zinedine Zidane" :country "France" :age 47}
    ]
)

并成功使用该filter功能

(filter #(= (:id %) 1) footballers)

结果:

({:id 1, :name "Christiano Ronaldo", :country "Portugal", :age 35})

如何使用filter函数在向量列表中执行相同操作?

标签: listvectorfilterclojure

解决方案


(filterv #(= "1" (first %)) footballers)  ; or `filter`

   ;=> [["1" "Christiano Ronaldo" "Portugal" "35"]]  ; vector containing 1 vector

请参阅此文档列表


推荐阅读