获取序列中一个项目出现的位置

时间:2016-02-18 01:10:49

标签: clojure clojurescript

从一个序列中,我需要获取给定项目出现的所有位置。

我问自己这是否是解决问题的好方法:

(defn get-positions [item coll]
  (->> (map-indexed vector coll)
       (filter (fn [[_ v]] (= item v)))
       (map first)))

这也适用于字符串,它们将被第一个映射转换为序列。但是,如果我知道输入是字符串,那么这个问题会有更多字符串特定的方法吗?

1 个答案:

答案 0 :(得分:2)

既然您已经有了问题的一般解决方案,那么您为什么要花费更多精力来尝试提出更具体的解决方案呢?这样做的好处可以忽略不计。

只是为了各种各样,这是实现你的功能的另一种方式:

(defn positions [x coll]
  (keep-indexed #(when (= x %2) %1) coll))