什么是 clojure.core 相当于 lodash _.pluck

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 中是否已经包含这样的东西,但我忽略了它。

ma2*_*a2s 1

这里有一些简单的技巧:

(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)

之所以有效,是因为关键字的行为也类似于函数。