1. ホーム
  2. clojure

[解決済み] ベクトル中のある項目のインデックスを見つけるにはどうすればよいですか?

2023-03-27 18:13:12

質問

どのような ???? はどうすればいいのでしょうか?内蔵されているのでしょうか? このタスクを達成するための最良の方法は何でしょうか?

(def v ["one" "two" "three" "two"])

(defn find-thing [ thing vectr ]
  (????))

(find-thing "two" v) ; ? maybe 1, maybe '(1,3), actually probably a lazy-seq

どのように解決するのですか?

内蔵されています。

user> (def v ["one" "two" "three" "two"])
#'user/v
user> (.indexOf v "two")
1
user> (.indexOf v "foo")
-1

全てのマッチに対するインデックスの遅延seqが必要な場合。

user> (map-indexed vector v)
([0 "one"] [1 "two"] [2 "three"] [3 "two"])
user> (filter #(= "two" (second %)) *1)
([1 "two"] [3 "two"])
user> (map first *1)
(1 3)
user> (map first 
           (filter #(= (second %) "two")
                   (map-indexed vector v)))
(1 3)