【发布时间】:2017-07-13 12:20:39
【问题描述】:
(使用 Node.js) 嗨,我有一个带有用户(用户类)的数组,当我用 console.log 打印数组时,它会正确显示内容并显示它的长度为 3,但是当我尝试从数组中获取任何东西时,它返回undefined,对于*.length,它返回0。问题出在哪里?
exports.users = [];
exports.loadUsers = (callback) => {
let more = true;
let i = 0;
while(more) {
let us = _usersFolder + "us_" + i + "/";
if(fs.existsSync(us)) {
fs.readFile(path.join(us + "personal.json"), (err, data) => {
if(err) {
console.log("failed to load file!");
return;
}
let json_personal = JSON.parse(data);
this.users.push(new User(json_personal));
});
i++;
} else {
more = false;
}
}
callback();
}
exports.getUserById = (id) => {
console.log(this.users);
console.log("length: " + this.users.length);
console.log(this.users[0]);
for(let i = 0; i < this.users.length; i++) {
let u = this.users[i];
console.log(u.id);
if(u.id === id) {
return u;
}
}
return false;
}
getUserById 在回调中被调用,所以用户已经加载完毕。
【问题讨论】:
-
这是一个对象。尝试打印 this.users[0].key
-
三行代码都是连续的吗?
-
请添加更多您的实际代码。
-
这 3 行只是一个示例,您可以查看它们各自返回的内容。这很奇怪,因为它实际上适用于其他功能。另外,如果我尝试使用 for each,也行不通。
-
我认为这不是您的实际代码。不过,这就是为什么我要求提供实际代码的原因。我们无法根据“示例”代码提供帮助。
标签: javascript arrays