Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法使用u.map根据属性名称获取属性值_Javascript_Angularjs_Lodash - Fatal编程技术网

Javascript 无法使用u.map根据属性名称获取属性值

Javascript 无法使用u.map根据属性名称获取属性值,javascript,angularjs,lodash,Javascript,Angularjs,Lodash,我有一个应用程序使用MongoDB作为数据库,我很难从数组变量中提取属性值。我使用了一个.forEach来检查它们是否有数据,它返回的是正数,但是当我试图根据它们的属性名获取值时,我得到了未定义的 这是我的MongoDB模型: /* Passport tab schema */ passportInfo: { passportDetails: [] }, /* Visa tab schema */ visaInfo: { visaDetails: [] }, 调用consol

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

这是我的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

我做错了什么

如有任何答复,将不胜感激


谢谢。

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

    _.flatMap(results, function(item){
   return _.map(item.passportInfo.passPortDetails, function(n) {
       return n.passportExpiry;
   });
});
[更新]上一个答案中有一个错误。这是正确的。由于您使用的是旧版本的
lodash
,而不是
flatMap
,因此请像这样使用
flatte
功能:

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

数组没有任何名为“passportInfo”的属性。您介意使用fiddle/plnkr/jsbin创建最小的工作副本吗?这里有一个简单的例子,说明了我试图使用相同的对象结构所做的事情:我不能使用
.flatMap
,因为我的lodash版本只有3.10.1。我可以省略这一部分吗?你可以升级你的Iodash版本或者使用展平功能。