如何在 lodash 版本 4 中获取 _.pick 功能
How to get _.pick functionality in lodash version 4
据我所知,这个答案,如下所示,现在在 lodash v4 中被破坏了。
var thing = {
"a": 123,
"b": 456,
"abc": 6789
};
var result = _.pick(thing, function(value, key) {
return _.startsWith(key, "a");
});
console.log(result.abc) // 6789
console.log(result.b) // undefined
如何在 lodash 的第 4 版中做到这一点?
更新 (08.二月)
从 v4.0.1 开始,_.omitBy 和 _.pickBy 现在为谓词提供了一个键参数。因此,现在的正确答案是:
使用_.pickBy(object, [predicate=_.identity])
原始答案
从 v4 开始,一些方法已被拆分。例如,_.pick() 已拆分为 _.pick(array, [props])
和 _.pickBy(object, [predicate=_.identity])
我的第一个方法是尝试这种_.pickBy()
方法。不幸的是,所有...By()
方法都只将值作为第一个参数传递。他们不会获得密钥或通过集合。这就是为什么它不能通过简单地从_.pick()
切换到_.pickBy()
来工作。
但是,您可以这样做:
var thing = {
"a": 123,
"b": 456,
"abc": 6789
};
var result = _.pick(thing, _(thing).keys().filter(function(key) {
return _.startsWith(key, "a");
}).value());
console.log(result)
嗯,没有记录 _.startsWith() 已从 Lodash 中删除。
无论如何,解析密钥的第一个字符怎么样?
var result = _.pick(thing, function(value, key) {
return key[0] == "a";
});
var thing = {
"a": 123,
"b": 456,
"abc": 6789
};
_.pick(object, arrayOfProperties)
_.pick(thing,["a","b"])={"a":123,"b":456}
当您使用 REST API 时,此方法非常有用。 当您通过解析 req.body 创建对象时,这就是我们创建对象的方式。
router.post("/users", async (req, res) => {
const user = new User({
name: req.body.name,
email: req.body.email,
password: req.body.password,
age: req.body.age
});});
如你所见,这是头痛,看起来很丑。相反
const user=new User(_.pick(req.body,["name","email","password","age"]))
相关文章:
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- jquery试图按名称获取按钮位置
- 如何在jQuery中获取元素的形式
- 如何在php文件中获取$.post-ajax传递的值
- 在Shopify中获取博客文章的图片
- 使用Javascript获取所选选项ID
- 在jQuery中获取表的行索引
- 使用jquery将mysql数据获取到新的表行中
- 在动态创建的元素上获取对特定选择器的引用
- 从城市名称获取惊喜
- Angular只从数组中获取所需的数据
- 无法将数据从firebase获取到我的html页面
- 从ajax请求中获取javascript对象
- 如何从画布上的某个移动事件中获取X和Y
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 如何在PHP中使用$_POST获取Select元素值
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- 如何在 lodash 版本 4 中获取 _.pick 功能