为什么 console.log() 显示一个数组,但 typeof 返回“object”?

use*_*745 5 javascript mongoose mongodb node.js

这与 mongoose find() 操作的结果有关。代码

console.log('apparently this is an ' + typeof campaign.advertGroups, campaign.advertGroups);

导致以下输出:

apparently this is an object [ { adverts: [ [Object], [Object], [Object] ] } ]

campaign.advertGroups尽管它是 Mongo 集合中的数组,但它的行为不像数组(即 length 属性未定义等)。

有人能解释一下吗?这感觉太愚蠢了,我一定错过了一些非常非常明显的东西。

voi*_*oid 5

javascript 的奇怪行为之一是它typeof []是一个对象。尽管有一些方法可以检查该对象是否是数组。

其中之一是:

if(Array === someobj.constructor)
{
  console.log('Its an array');
}
Run Code Online (Sandbox Code Playgroud)


use*_*745 1

已解决:这是我的 Mongoose 架构的问题,具体定义了应该是数组作为具有嵌套对象的对象。Javascript 在数组上的技术细节实际上是糖衣对象,这使问题变得混乱,导致 console.log 和 typeof 呈现看似冲突的信息;感谢评论者对这块拼图的评论!