Lodash _.pick() return 空对象
Lodash _.pick() return empty objects
我在 mongodb 中使用 nodejs。我的 object
就像我从集合查询中得到的一样。然后我用 lodash
https://lodash.com/docs#pick.
过滤它
var _ = require('lodash');
var object = [{
branchID: '1239',
branchName: 'Branch Name 1',
zoneID: '51',
zoneName: 'Zone Name 1',
regionID: '5',
regionName: 'Region 1'
},
{
branchID: '1240',
branchName: 'Branch Name 2',
zoneID: '52',
zoneName: 'Zone Name 2',
regionID: '5',
regionName: 'Region 3'
}];
var test1 = _.pick(object, function (data) {
return data.branchName == 1239
});
var test1 = _.pick(object, function (data) {
return data.branchName == "1239"
});
console.log(test); // {}
我今天一整天都在 mongodb 工作。
上面的代码在今天晚上之前也能正常工作。
通常,它应该 return 我这个 :
{
branchID: '1239',
branchName: 'Branch Name 1',
zoneID: '51',
zoneName: 'Zone Name 1',
regionID: '5',
regionName: 'Region 1'
}
我做错了吗?我还有其他方法来过滤这个对象吗?
我认为你必须使用 _.pickBy
因为这是一个函数你也可以不使用函数但是使用函数你需要 pickBy。
进一步解释:_.pick 是当你想从对象中选择精确的键时 _.pick({a: 1, b: 2, c: 3}, ['a', 'c'])
将 return => {a: 1, c: 3}
只有与 _.omit 与省略相同:_.omit({a: 1, b: 2, c: 3}, ['b'])...
然后有时您想要检查键或值是否符合特定条件,因此您必须使用 _.pickBy 或 _.omitBy:
_.pickBy({a: 1, b: 2, c: 3}, function(item){
if(_.gte(item, 2)){
return item;
}
});
Will return {b: 2, c: 3} 因为它们大于或等于 2。作为对评论的回应,请确保您可能想要做这样的事情,如果您有一个数组:
function checkIfMeetsMyCriteria(obj){
_.pickBy(obj, function (data) {
return data.branchName == "1239"
});
}
_.map(objects, checkIfMeetsMyCriteria);
我认为您想选择 branchID = 1239 的项目,但您使用的是 branchName。所以没有数据returns.
我认为下面的代码应该可以工作。
var test1 = _.pick(object, function (data) {
return data.branchID == "1239"
});
我在 mongodb 中使用 nodejs。我的 object
就像我从集合查询中得到的一样。然后我用 lodash
https://lodash.com/docs#pick.
var _ = require('lodash');
var object = [{
branchID: '1239',
branchName: 'Branch Name 1',
zoneID: '51',
zoneName: 'Zone Name 1',
regionID: '5',
regionName: 'Region 1'
},
{
branchID: '1240',
branchName: 'Branch Name 2',
zoneID: '52',
zoneName: 'Zone Name 2',
regionID: '5',
regionName: 'Region 3'
}];
var test1 = _.pick(object, function (data) {
return data.branchName == 1239
});
var test1 = _.pick(object, function (data) {
return data.branchName == "1239"
});
console.log(test); // {}
我今天一整天都在 mongodb 工作。 上面的代码在今天晚上之前也能正常工作。 通常,它应该 return 我这个 :
{
branchID: '1239',
branchName: 'Branch Name 1',
zoneID: '51',
zoneName: 'Zone Name 1',
regionID: '5',
regionName: 'Region 1'
}
我做错了吗?我还有其他方法来过滤这个对象吗?
我认为你必须使用 _.pickBy
因为这是一个函数你也可以不使用函数但是使用函数你需要 pickBy。
进一步解释:_.pick 是当你想从对象中选择精确的键时 _.pick({a: 1, b: 2, c: 3}, ['a', 'c'])
将 return => {a: 1, c: 3}
只有与 _.omit 与省略相同:_.omit({a: 1, b: 2, c: 3}, ['b'])...
然后有时您想要检查键或值是否符合特定条件,因此您必须使用 _.pickBy 或 _.omitBy:
_.pickBy({a: 1, b: 2, c: 3}, function(item){
if(_.gte(item, 2)){
return item;
}
});
Will return {b: 2, c: 3} 因为它们大于或等于 2。作为对评论的回应,请确保您可能想要做这样的事情,如果您有一个数组:
function checkIfMeetsMyCriteria(obj){
_.pickBy(obj, function (data) {
return data.branchName == "1239"
});
}
_.map(objects, checkIfMeetsMyCriteria);
我认为您想选择 branchID = 1239 的项目,但您使用的是 branchName。所以没有数据returns.
我认为下面的代码应该可以工作。
var test1 = _.pick(object, function (data) {
return data.branchID == "1239"
});