在Clojure中,Java互操作为我们提供了.indexOf,但ClojureScript没有这种功能。如何在向量中获得项的索引?
(def items [:a :b :c])
;; Clojure
(.indexOf items :a) ; => 0
;; ClojureScript
;; ???发布于 2014-08-15 19:40:12
将向量转换为数组。core/clojure.core/to-array
我不知道这上面有什么好处。:)
cljs.user=> (.indexOf (to-array [:a :b]) :b)
=> 1发布于 2014-08-15 09:43:56
这里是一个显式递归的答案。不过,我希望有一个更好的答案!
(defn index-of [s v]
(loop [idx 0 items s]
(cond
(empty? items) nil
(= v (first items)) idx
:else (recur (inc idx) (rest items)))))发布于 2015-10-01 10:57:07
另一种选择(如果找不到返回为零)
(defn index-of [coll value]
(some (fn [[idx item]] (if (= value item) idx))
(map-indexed vector coll)))https://stackoverflow.com/questions/25324082
复制相似问题