无法使用_.map获取基于属性名称的属性值

时间:2017-03-20 13:29:16

标签: javascript angularjs lodash

我有一个使用MongoDB作为数据库的应用程序,我很难从数组变量中提取属性值。我使用_.forEach检查他们是否有数据并返回正数,但是当我尝试根据属性名称获取值时,我得到了undefined

这是我的MongoDB模型:

/* Passport tab schema */
passportInfo: {
    passportDetails: []
},

/* Visa tab schema */
visaInfo: {
    visaDetails: []
},

调用console.log显示我的passportInfo不为空:

[ { passportExpiry: '2017-03-02T16:00:00.000Z',
    passportNumber: { '0': 'AS1234567' },
    countryOfOrigin: { '0': 'Country Name' } } ]

以下是我试图提取价值的方法:

    _.forEach(results, function (item) {
        console.log(item.passportInfo);

        var temp = _.map(item.passportInfo, "passportExpiry");
        console.log(temp);

但是,在我运行此功能后,temp返回了undefined

我做错了什么?

任何答案都将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

函数_.map的原型正在等待集合作为第一个参数,但在您的情况下,字段passportInfo是一个对象。您需要的是将passportDetails数组传递给_.map。这是一种简单的方法:

    _.flatMap(results, function(item){
   return _.map(item.passportInfo.passPortDetails, function(n) {
       return n.passportExpiry;
   });
});

[更新]上一个答案中有错误。它被纠正了。由于您使用的是旧版lodash,而不是flatMap,请使用flatten函数,如下所示:

    _.flatten(results, (item) => {
   return _.map(item.passportInfo.passPortDetails, (n) => {
     return n.passportExpiry;
   });
})