替代.indexOf来获取Clojure中矢量的索引

tru*_*fle 1 vector clojure indexof indices

这是一个简单的问题但是,我被困住了.所以假设我有一个带负数,零和正数的输入向量.

[-1 -1 -2 -1 -4 0 -6 -1 -5 -2 -10 **4** -12 -4 -6 -1 -16 **3** -18 **2** -10 -8 -22 **12** -19
-10 -14 0 -28 **12** -30 -1 -18 -14 -22 **19** -36 -16 -22 **10** -40 **12** -42 -4 -12 -20 -46 **28** -41 -7]
Run Code Online (Sandbox Code Playgroud)

我想返回前一个向量的索引向量,其中值为正.

所以返回值是

 (11 17 19 23 29 35 39 41 47)
Run Code Online (Sandbox Code Playgroud)

11是4所在的指标,17是3所在的指标,等等

我正在使用.indexOF

这就是它的回归:(11 17 19 23 23 35 39 23 47)

我认为b/c在索引23,正值是12,而在索引29,值也是12,所以它只是返回索引,它首先看到正值"12"但是我怎么能得到在这附近?

我已经阅读了线程如何在向量中找到项目的索引? 但是我仍在苦苦挣扎,因为如果你正在寻找"两个"的话,那个人似乎在谈论如何在向量中找到"两个"的索引.

Lee*_*Lee 6

你可以使用keep-indexed:

(keep-indexed (fn [idx v] (if (pos? v) idx)) input-vector)
Run Code Online (Sandbox Code Playgroud)