gpt4 book ai didi

arrays - 无法读取数组的属性

转载 作者:太空宇宙 更新时间:2023-11-03 22:17:42 25 4
gpt4 key购买 nike

在我的 app.js 中,我有以下内容:

post.find({'global': true}).sort('date').exec(function(err, data) {
for (var i = 0; i <= data.length; i++) {
console.log(data[i].email);
//socket.emit('Post', {name: data[i].name, cont: data[i].cont, date: data[i].date});
}
});

当我使用时

console.log(data[i]);

我以以下形式获取数据

{name: blah, cont: blah, email: blah, etc}

但是当我尝试发出数据时

data[i].attribute

我收到错误

TypeError: Cannot read property 'attribute' of undefined

我知道数据在那里,因为我可以将其记录在控制台中。为什么我无法访问数组的特定属性?有什么想法吗?

最佳答案

这可能是因为你如何使用循环。你的逻辑是<=将导致循环额外运行一次,因此访问不存在的数组值。这是正在发生的情况:

var data = [{ foo: 'bar1' }, { foo: 'bar2' }];
for (var i = 0; i <= data.length; i++) {
console.log(data[i].foo);
}

循环将运行三次而不是两次,从而导致这种情况发生:

console.log(data[0].foo); // bar1
console.log(data[1].foo); // bar2
console.log(data[2].foo); // TypeError: Cannot read property 'foo' of undefined

要解决此问题,请将循环更改为 for (var i = 0; i < data.length; i++) .

此外,调试提示:在检查像您这样的错误时,您应该尝试使用输出,即使 data是一个长度为 1000 的数组,错误仍然只会在最后一次迭代时抛出,并且 socket.emit()看起来好像循环只运行了一次。

关于arrays - 无法读取数组的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19172178/

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