id == 1 인지도가 벡터의 두 번째지도라는 것을 미리 알고 있습니까? 그렇다면 :
user> (-> my-vec
(assoc-in [1 :a] "baz2")
(assoc-in [1 :b] "spam2"))
[{:id 0, :a "foo", :b "bar"} {:id 1, :a "baz2", :b "spam2"} {:id 2, :a "qux", :b "fred"}]
당신이 ID로 많은 데이터에 액세스해야하는 경우, 또 다른 아이디어는 :id
에 키가 해시 맵의 해시지도 해시 맵의 당신의 벡터를 대체하는 것입니다. 그럼 당신은 더 쉽게 assoc-in
상관없이 물건의 순서. 아이디 :
user> (def new-my-vec (zipmap (map :id my-vec) my-vec))
#'user/new-my-vec
user> new-my-vec
{2 {:id 2, :a "qux", :b "fred"}, 1 {:id 1, :a "baz", :b "spam"}, 0 {:id 0, :a "foo", :b "bar"}}
user> (-> new-my-vec
(assoc-in [1 :a] "baz2")
(assoc-in [1 :b] "spam2"))
{2 {:id 2, :a "qux", :b "fred"}, 1 {:id 1, :a "baz2", :b "spam2"}, 0 {:id 0, :a "foo", :b "bar"}}
# (%) 함수 구문을 사용하면이 사실이 명확하지 않습니까? –