我有一个向量向量,其中包含一些字符串和整数:
(def data [
["a" "title" "b" 1]
["c" "title" "d" 1]
["e" "title" "f" 2]
["g" "title" "h" 1]
])
我正在尝试迭代向量并返回(?)包含特定字符串的任何行,例如“A”。我尝试实现这样的事情:
(defn get-row [data]
(for [d [data]
:when (= (get-in d[0]) "a")] d
))
我对 Clojure 很陌生,但我相信这是在说:对于“data”中的每个元素(向量),如果该向量包含“a”,则返回它?
我知道获取需要 2 个参数,这部分是我不确定该怎么做的地方。
我看过类似 this 的答案和 this但我不太明白它们是如何工作的。据我所知,他们正在将矢量转换为 map 并对其进行操作?
最佳答案
(filter #(some #{"a"} %) data)
看到集合 #{"a"}
有点奇怪,但它可以用作 some
的谓词函数。 。向集合中添加更多条目就像是逻辑“或”,即
(filter #(some #{"a" "c"} %) data)
=> (["a" "title" "b" 1] ["c" "title" "d" 1])
关于Clojure - 获取向量向量内的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33175534/