use*_*173 16 javascript lodash
我有一些对象:
var results= [
{
"_type": "MyType",
"_id": "57623535a44b8f1417740a13",
"_source": {
"info": {
"year": 2010,
"number": "string",
},
"type": "stolen",
"date": "2016-06-16T00:00:00",
"createdBy": "57469f3c71c8bf2479d225a6"
}
}
];
Run Code Online (Sandbox Code Playgroud)
我需要从数组中选择特定字段.结果,我想得到以下内容:
[
{
"_id": "57623535a44b8f1417740a13",
"info": {
"year": 2010,
"number": "string"
},
"type": "stolen",
"date": "2016-06-16T00:00:00",
"createdBy": "57469f3c71c8bf2479d225a6"
}
]
Run Code Online (Sandbox Code Playgroud)
如您所见,我想选择对象的_id字段和内容_source.我怎么能用lodash做到这一点?
我找到了.map函数,但它不需要一组键:
var res = _.map(results, "_source");
rad*_*dyz 40
你可以这样做:
var mapped = _.map(results, _.partialRight(_.pick, ['_id', 'info', 'type', 'date', 'createdBy']));
Run Code Online (Sandbox Code Playgroud)
一点解释:
_.map():期望一个函数,它从集合中获取每个项目,以便您可以将其映射到其他项目._.partialRight():采用一个函数,稍后将调用它的参数附加到结尾_.pick():获取从对象指定的路径.在纯 Javascript 中,您可以迭代Array#map并为每个对象组装一个新对象,而不会破坏原始对象。
var results = [{ "_type": "MyType", "_id": "57623535a44b8f1417740a13", "_source": { "info": { "year": 2010, "number": "string", }, "type": "stolen", "date": "2016-06-16T00:00:00", "createdBy": "57469f3c71c8bf2479d225a6" } }],
res = results.map(function (a) {
var o = { _id: a._id };
["info", "type", "date", "createdBy"].forEach(function (k) {
o[k] = a._source[k];
});
return o;
});
console.log(res);Run Code Online (Sandbox Code Playgroud)