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