Lodash _.pick()返回空对象

时间:2016-05-02 14:01:43

标签: node.js object lodash

我正在使用带有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'
}

我有些错误吗?我有另一种方法来过滤这个对象吗?

2 个答案:

答案 0 :(得分:1)

我认为你必须使用_.pickBy,因为这是一个你也可能没有使用过函数的函数,但使用了一个你需要pickBy的函数。

有关进一步说明:_.pick是指您希望从_.pick({a: 1, b: 2, c: 3}, ['a', 'c'])之类的对象中选择精确键时将返回=> {_ 1}}只与_.omit重合,同样省略:_.omit({a:1,b:2,c:3},[' b']).. ..

然后有时间要检查某个键或值是否符合某个条件,因此您必须使用_.pickBy或_.omitBy:

{a: 1, c: 3}

将返回{b:2,c:3},因为它们大于或等于2.响应评论以确定如果你有一个数组,你可能会想要这样做:

_.pickBy({a: 1, b: 2, c: 3}, function(item){
    if(_.gte(item, 2)){
        return item;
    }
});

答案 1 :(得分:0)

我认为您想选择branchID = 1239的项目,但是您正在使用branchName。这就是为什么没有数据返回的原因。

我认为下面的代码应该可行。

var test1 = _.pick(object, function (data) {
    return data.branchID == "1239"
});