javascript - 在javascript中读取数组
问题描述
我是 javascript 新手,使用 nodejs 和 mongoose 查询来获得我想循环并在另一个数组中获取一些值的结果。
结果集看起来像
[ { _id: 5366e9049cfc825b32966852,
companies:
[ 5ab20bb69cb2754e949a09dc,
5ac5d53983d45353bc6a9c54,
5ac62eeca5421e4cb9abf63e]
},
{ _id: 5b9251f8ae8db624755f4b90,
companies:
[ 5b461c892bb9c81bd3ed4a25,
5b5086196947782fbc873d28,
5b76a6c79dc71a4a12564cc5 ]
}]
最终的数组应该看起来像——
[ 5ab20bb69cb2754e949a09dc,
5ac5d53983d45353bc6a9c54,
5ac62eeca5421e4cb9abf63e,
5b461c892bb9c81bd3ed4a25,
5b5086196947782fbc873d28,
5b76a6c79dc71a4a12564cc5]
我的代码——
Model.find().exec(function(err,gdoc){
if(err)
{
callback({err:err,message:"Error looking up company"});
}else
{
for (var i = 0, len = gdoc.length; i < len; i++) {
console.log(gdoc.companies);
}
}
});
我得到未定义的值。
非常感谢任何帮助。提前致谢。
解决方案
你得到的原因undefined
是你试图companies
访问gdoc
. 而不是gdoc.companies
,您必须使用gdoc[i].companies
.
您可以Array.prototype.concat
与展开语法 ( ...
)一起使用,而不是循环,Array.prototype.map
如下所示:
const gdoc = [
{
_id: '5366e9049cfc825b32966852',
companies: [
'5ab20bb69cb2754e949a09dc',
'5ac5d53983d45353bc6a9c54',
'5ac62eeca5421e4cb9abf63e',
],
},
{
_id: '5b9251f8ae8db624755f4b90',
companies: [
'5b461c892bb9c81bd3ed4a25',
'5b5086196947782fbc873d28',
'5b76a6c79dc71a4a12564cc5',
],
},
];
const companies = [].concat(...gdoc.map(doc => doc.companies));
console.log(companies);
推荐阅读
- python - 使用 cx_Freeze 冻结成可执行文件后如何知道当前文件路径?
- reactjs - 使用反应路由器链接时如何将道具从一个组件传递到另一个组件
- arrays - Google 脚本:矩形网格的 getValues() 和 setValues()
- react-native - 没有远程调试器,我的平面列表无法呈现
- google-apps-script - 如何根据 C 列中的输入复制 U 列单元格中的粘贴值
- android - java.lang.NoClassDefFoundError:解析失败:Landroidx/core/os/UserManagerCompat
- php - 搜索组顺序无关的字符串组
- php - 如何从table1中获取特定数据,在table2中使用
- python - 如何使用 apscheduler 安排 python 函数在特定分钟(例如 00、10、20)每小时运行一次
- reporting-services - SSRS 如何为图表元素生成随机颜色