ma2*_*a2s 5 javascript clojure lodash
Lodash _.pluck这样做
var users = [
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 }
];
_.pluck(users, 'user');
// ? ['barney', 'fred']
Run Code Online (Sandbox Code Playgroud)
好处是它也可以像这样深入:
var users = [
{ 'user': {name: 'barney'}, 'age': 36 },
{ 'user': {name: 'fred'}, 'age': 40 }
];
_.pluck(users, 'user.name');
// ["barney", "fred"]
Run Code Online (Sandbox Code Playgroud)
在 Clojure 核心中是否有等价物?我的意思是,我可以像这样轻松地创建一条线
(defn pluck
[collection path]
(map #(get-in % path) collection))
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
(def my-coll [{:a {:z 1}} {:a {:z 2}}])
(pluck my-coll [:a :z])
=> (1 2)
Run Code Online (Sandbox Code Playgroud)
我只是想知道 Clojure 中是否已经包含这样的东西,但我忽略了它。
这里有一些简单的技巧:
(def my-coll [{:a {:z 1}} {:a {:z 2}}])
(map :a my-coll)
=> ({:z 1} {:z 2})
(map (comp :z :a) my-coll)
=> (1 2)
Run Code Online (Sandbox Code Playgroud)
之所以有效,是因为关键字的行为也类似于函数。