ClojureScript中的矢量索引

Joh*_*son 5 clojure clojurescript

在Clojure中,Java interop给了我们.indexOf,但是ClojureScript没有.如何获取向量中项目的索引?

(def items [:a :b :c])

;; Clojure
(.indexOf items :a) ; => 0

;; ClojureScript
;; ???
Run Code Online (Sandbox Code Playgroud)

Joh*_*son 6

这是一个明确的递归答案。我希望有一个更好的答案!

(defn index-of [s v]
  (loop [idx 0 items s]
    (cond
      (empty? items) nil
      (= v (first items)) idx
      :else (recur (inc idx) (rest items)))))
Run Code Online (Sandbox Code Playgroud)


Tre*_*vor 5

将矢量转换为数组.http://clojuredocs.org/clojure_core/clojure.core/to-array

我不确定这是什么穿孔.:)

cljs.user=> (.indexOf (to-array [:a :b]) :b)
=> 1
Run Code Online (Sandbox Code Playgroud)

  • 这在Clojurescript中不起作用,是吗?看到这个被拒绝的错误报告:http://dev.clojure.org/jira/browse/CLJS-996在CLJS 1.7上,`(.indexOf(to-array [:a:b]):b)`返回`-1 ` (2认同)