javascript - What happened to Lodash _.pluck?

ID : 10063

viewed : 17

Tags : javascriptlodashjavascript

Top 5 Answer for javascript - What happened to Lodash _.pluck?

vote vote

97

Ah-ha! The Lodash Changelog says it all...

"Removed _.pluck in favor of _.map with iteratee shorthand"

var objects = [{ 'a': 1 }, { 'a': 2 }];  // in 3.10.1 _.pluck(objects, 'a'); // → [1, 2] _.map(objects, 'a'); // → [1, 2]  // in 4.0.0 _.map(objects, 'a'); // → [1, 2] 
vote vote

89

There isn't a need for _.map or _.pluck since ES6 has taken off.

Here's an alternative using ES6 JavaScript:

clips.map(clip => clip.id)

vote vote

72

Use _.map instead of _.pluck. In the latest version the _.pluck has been removed.

vote vote

66

If you really want _.pluck support back, you can use a mixin:

const _ = require("lodash")  _.mixin({     pluck: _.map }) 

Because map now supports a string (the "iterator") as an argument instead of a function.

vote vote

51

For plucking single or multiple properties:

_.mixin({     properties: (paths) =>             (obj) => paths.reduce((memo, path) => [...memo, obj[path]], []),     pluck: (obj, ...keys) => _.map(obj, _.flatten(keys).length > 1                                     ? _.properties(_.flatten(keys))                                     : (o) => o[keys[0]]) }) 
var stooges = [{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 60}];  // underscore compatible usage _.pluck(stooges, 'name'); => ["moe", "larry", "curly"]  // multiple property usage _.pluck(stooges, 'name', 'age') => [["moe",40], ["larry",50], ["curly",60]]  // alternate usage _.pluck(stooges, ['name', 'age'])  => [["moe",40], ["larry",50], ["curly",60]] 

Top 3 video Explaining javascript - What happened to Lodash _.pluck?

Related QUESTION?