gpt4 book ai didi

javascript - 为什么我的第一个数组项总是包含 'Function' ?

转载 作者:行者123 更新时间:2023-11-30 13:03:52 25 4
gpt4 key购买 nike

我是 javascript 的新手,一直致力于修改 Node js/mongo 网络服务。我正在遍历一个数组并在每个索引处执行一个带有 id 的查询,这样我就可以得到完整的对象,如下所示:

var topicObjArray = [orm.Topic];

for(var i = 0; i < topicIdsArray.length; i++) {

orm.Topic
.find({ appId: appId, _id: topic[i].id})
.exec(function(error, topic) {
if(error) {
console.log('oops ' + error);
}
else if(topic && topic.length > 0) {
topicObjArray.push(topic);
count++;
}
else {
count++;
}

if(count == topicIdsArray.length) {
// yay we've got all our topics! Carry on!
// But oh no something is amiss!
}
});
}

在正常情况下,计数会递增,直到它等于原始数组计数并且该方法可以完成。在这种情况下,由于某种原因,在初始化 topicObjArray 时,在我插入任何对象之前,第一个索引被“Function”占用。因此,如果我查询六个对象,我将只能返回其中的 5 个,因为第一个索引总是被占用。

我敢肯定我一定是忽略了这里的一些简单内容,但是网络搜索没有提供任何解决方案的提示。问题肯定出在数组的初始化上,但我不明白它是什么。我尝试了不同的方法来实例化它,但结果相同。这是我的调试器的屏幕截图,它最能描述正在发生的事情(我使用的是 WebStorm IDE):

Weirdness

如果您需要更多信息,请告诉我。我很感激社区可以提供的任何见解。

最佳答案

你像这样初始化数组

var topicObjArray = [orm.Topic];

这使得数组的第一个元素 orm.Topic,从您的其余代码判断它是一个函数。

像这样简单地初始化你的数组:

var topicObjArray = [];

关于javascript - 为什么我的第一个数组项总是包含 'Function' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16401467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com