4 ms·
Damn, thought I invented the array path thing :) I love how clear it is to read but my favorite thing is how easy it is to apply it: var x = { a: 1, b: 'B',
by jasonkostempski 12y ago
Damn, thought I invented the array path thing :) I love how clear it is to read but my favorite thing is how easy it is to apply it:
var x = { a: 1, b: 'B', c: { x: "X", y: "Y", z: "Z" }, d: [{p:"P"},{q:"Q"},{r:"R"}] };
["d", 1, "q"].reduce(function (prev, curr) { return prev[curr]; }, x);
>>> "Q"
I got stuck at indexing as well. I feel like there's a good solution involving using an array element within the path array to denote a selector query of sorts but I haven't hashed it out yet.
- afandian 12y agoIf you're interested, this is the general structure and access method of the 'trie' data structure. http://en.wikipedia.org/wiki/Trie http://en.wikipedia.org/wiki/Trie Also, Clojure has a nice functions called get-in and friends: user=> (def x {:a 1 :b 'B' :c { :x "X" :y "Y" :z "Z" } :d [{:p "P"} {:q "Q"} {:r "R"}] }) #'user/x user=> (get-in x [:d 1 :q]) "Q" user=> (assoc-in x [:d 1 :q] "QQ") {:a 1, :c {:z "Z", :y "Y", :x "X"}, :b B', :d [{:p "P"} {:q "QQ"} {:r "R"}]}