我曾经使用过 Lodash _.pluck
......我喜欢pluck ......
意识到 Lodash 不再支持pluck
(从 Lodash 4.x 开始),我很难记住要使用什么来代替......
我去了文档,按 cmd-f,输入“pluck”,但我可怜的被遗弃的朋友甚至没有得到适当的提及……甚至没有一个“已被替换”……
有人可以提醒我我应该使用什么代替吗?
我曾经使用过 Lodash _.pluck
......我喜欢pluck ......
意识到 Lodash 不再支持pluck
(从 Lodash 4.x 开始),我很难记住要使用什么来代替......
我去了文档,按 cmd-f,输入“pluck”,但我可怜的被遗弃的朋友甚至没有得到适当的提及……甚至没有一个“已被替换”……
有人可以提醒我我应该使用什么代替吗?
啊哈!该Lodash更新日志说,这一切...
“删除_.pluck
以支持_.map
iteratee 速记”
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]
不需要_.map
或_.pluck
因为 ES6 已经起飞。
这是使用 ES6 JavaScript 的替代方法:
clips.map(clip => clip.id)
使用_.map
代替_.pluck
。在最新版本_.pluck
中已删除。
如果你真的想要_.pluck
支持,你可以使用 mixin:
const _ = require("lodash")
_.mixin({
pluck: _.map
})
因为map
现在支持字符串(“迭代器”)作为参数而不是函数。
对于采摘单个或多个属性:
_.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]]