(Node.jsを使用) こんにちは、console.logで配列を出力すると、ユーザ(Userクラス)の配列が表示されます。それは長さが3であることを示していますが、配列から何かを取得しようとすると、は未定義、* .lengthは0を返します。問題はどこですか?JS配列は常に未定義で長さ= 0を返す
exports.users = [];
exports.loadUsers = (callback) => {
let more = true;
let i = 0;
while(more) {
\t \t let us = _usersFolder + "us_" + i + "/";
\t \t if(fs.existsSync(us)) {
\t \t \t fs.readFile(path.join(us + "personal.json"), (err, data) => {
\t \t \t \t if(err) {
\t \t \t \t \t console.log("failed to load file!");
\t \t \t \t \t return;
\t \t \t \t }
\t \t \t \t let json_personal = JSON.parse(data);
\t \t \t \t this.users.push(new User(json_personal));
\t \t \t });
\t \t \t i++;
\t \t } else {
\t \t \t more = false;
\t \t }
}
callback();
}
exports.getUserById = (id) => {
console.log(this.users);
console.log("length: " + this.users.length);
console.log(this.users[0]);
\t for(let i = 0; i < this.users.length; i++) {
\t \t let u = this.users[i];
\t \t console.log(u.id);
\t \t if(u.id === id) {
\t \t \t return u;
\t \t }
\t }
\t return false;
}
のユーザーがすでにロードされているのでgetUserByIdは、コールバックで呼ばれています。
それがオブジェクトの。 this.users [0] .key – KimR
3行すべてのコードは連続していますか? –
実際のコードをさらに追加してください。 – str