首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ClojureScript中的向量索引

ClojureScript中的向量索引
EN

Stack Overflow用户
提问于 2014-08-15 09:22:29
回答 4查看 4.3K关注 0票数 7

在Clojure中,Java互操作为我们提供了.indexOf,但ClojureScript没有这种功能。如何在向量中获得项的索引?

代码语言:javascript
复制
(def items [:a :b :c])

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

;; ClojureScript
;; ???
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-08-15 19:40:12

将向量转换为数组。core/clojure.core/to-array

我不知道这上面有什么好处。:)

代码语言:javascript
复制
cljs.user=> (.indexOf (to-array [:a :b]) :b)
=> 1
票数 6
EN

Stack Overflow用户

发布于 2014-08-15 09:43:56

这里是一个显式递归的答案。不过,我希望有一个更好的答案!

代码语言:javascript
复制
(defn index-of [s v]
  (loop [idx 0 items s]
    (cond
      (empty? items) nil
      (= v (first items)) idx
      :else (recur (inc idx) (rest items)))))
票数 9
EN

Stack Overflow用户

发布于 2015-10-01 10:57:07

另一种选择(如果找不到返回为零)

代码语言:javascript
复制
(defn index-of [coll value]
  (some (fn [[idx item]] (if (= value item) idx))
        (map-indexed vector coll)))
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25324082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档