我在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合作。以上代码直到今天晚上才开始工作。通常情况下,它应该会给我这样的答复:
{
branchID: '1239',
branchName: 'Branch Name 1',
zoneID: '51',
zoneName: 'Zone Name 1',
regionID: '5',
regionName: 'Region 1'
}我做错什么了吗?我有别的方法过滤这个对象吗?
发布于 2016-05-02 14:04:22
我认为您必须使用_.pickBy,因为这是一个函数,您也不可能使用一个函数,而是使用一个函数,您需要pickBy。
关于进一步的解释:_.pick是指您想要从_.pick({a: 1, b: 2, c: 3}, ['a', 'c'])这样的对象中选择确切的键时,只返回与_.omit相同的=> {a: 1, c: 3},以处理省略:_.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;
}
});将返回{b: 2,c: 3},因为它们大于或等于2。在响应注释时,请确保如果您有一个数组,您可能希望这样做:
function checkIfMeetsMyCriteria(obj){
_.pickBy(obj, function (data) {
return data.branchName == "1239"
});
}
_.map(objects, checkIfMeetsMyCriteria);发布于 2018-08-28 07:28:54
我认为您希望选择具有branchID = 1239的项,但您使用的是branchName。这就是为什么没有数据返回。
我认为下面的代码应该有效。
var test1 = _.pick(object, function (data) {
return data.branchID == "1239"
});https://stackoverflow.com/questions/36984340
复制相似问题