[英]reset array of objects with lodash
如何重置与“ db”不同的数组对象的属性? 我需要将除“ db”以外的其他值设置为空字符串。
var arr = [
{
"db": "RHID",
"prv_value": "1",
"nxt_value": "1",
"diagnostic": "1"
},
{
"db": "CD_DOC_ID",
"prv_value": "2",
"nxt_value": "2",
"diagnostic": "2"
},
...
]
使用map函数,它需要一个数组和一个转换函数。 它将每个元素传递到函数中进行修改。
_.map(arr, function(curr) {
for (var prop in curr) {
// Please read http://phrogz.net/death-to-hasownproperty
if (curr.hasOwnProperty(prop) && prop != 'db') {
curr[prop] = '';
}
}
return curr;
});
这就是我要做的:
_.map(arr, function(i) {
return _.assign(
_(i).omit('db').mapValues(_.constant('')).value(),
_.pick(i, 'db')
);
});
本质上,这使用map()创建新对象的数组。 它使用assign()来构建映射对象(它基本上是串联两个对象)。 传递给assign()
的第一个参数是删除了db
属性的对象。 这是使用omit()完成的 。 删除此属性后,我们可以使用mapValues()将所有内容设置回空字符串。
现在,我们要做的就是重新添加db
属性,这就是为什么我们使用assign()
。 pick()函数用于获取db
值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.