Clojure:如何从向量中按索引获取多个项

7
我正在使用以下代码通过索引[1 2]提取数据,是否有更短的解决方案?
(vec (map #(nth ["a" "b" "c"] % ) [1 2]))
2个回答

9
< p > mapv 将映射到一个向量,而向量在作为函数应用时会进行索引查找。

(mapv ["a" "b" "c"] [1 2])

8
如果您只想要向量的第一个和第二个索引,有很多方法... 一个简单的子向量可以用来保留第一个索引直到第三个索引。
(subvec ["a" "b" "c"] 1 3)

你可以映射向量,并将你的向量应用于第一个和第二个索引,以返回最后两个索引作为向量。
(mapv ["a" "b" "c"] [1 2])

使用thread-last宏,您可以使用3个索引并删除第一个。
(->> ["a" "b" "c"] (take 3) (drop 1))

如果您有一个包含n个索引的向量,并且您只需要最后n个索引,则将基数0删除以返回最后n个。
(drop 1 ["a" "b" "c"])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接