[英]Odd behavior for array[value]
我正在嘗試檢查成員(來自成員數組)是否是官員(來自官員數組),但即使我復制了確切的已知值,它也不匹配。 我肯定錯過了什么。
getClanMemberInfo() {
this.clanMemberInfo = [];
console.log(this.clan.members);
console.log(this.clan.officers);
for (var i = 0; i < this.clan.members.length; i++) {
firebase
.firestore()
.collection("profiles")
.doc(this.clan.members[i])
.get()
.then(profile => {
var info = profile.data();
console.log(this.clan.officers['sJUZKKhLDvPDBWPILdzCN9waFpb2'])
if (this.clan.officers[this.clan.members[i]]) {
console.log("Hi officer");
info.officer = true;
} else {
console.log("BAT");
info.officer = false;
}
this.clanMemberInfo.push(info);
});
}
}
您可以看到我為 console.log 輸入了確切的值,它仍然未定義,但從上面的 console.logs 中它們不是空的。
我不明白為什么簡單的比較不匹配。
for (var i = 0; i < this.clan.members.length; i++) {
firebase
.firestore()
.collection("profiles")
.doc(this.clan.members[i])
.get()
.then(profile => {
var info = profile.data();
for (var o = 0; o < this.clan.officers.length; o++) {
console.log(this.clan.officers[o]);
console.log(this.clan.members[0]);
if (this.clan.officers[o].toString() === this.clan.members[i]) {
console.log("Hi officer");
info.officer = true;
} else {
console.log("BAT");
info.officer = false;
}
}
this.clanMemberInfo.push(info);
});
}
}
首先,可以使用index
號訪問Array
值。
getClanMemberInfo() {
this.clanMemberInfo = [];
console.log(this.clan.members);
console.log(this.clan.officers);
for (var i = 0; i < this.clan.members.length; i++) {
firebase
.firestore()
.collection("profiles")
.doc(this.clan.members[i])
.get()
.then(profile => {
var info = profile.data();
// you are looping using members length so use members below with index
console.log(this.clan.members[i])
// you can check if your member is an officer or not by below line
if (this.clan.officers.includes(this.clan.members[i])) {
console.log("Hi officer");
info.officer = true;
} else {
console.log("BAT");
info.officer = false;
}
this.clanMemberInfo.push(info);
});
}
}
似乎 this.clan.officers 是一個字符串數組,而不是字典。
所以 this.clan.officers[0] 被定義為 'sJUZKKhLDvPDBWPILdzCN9waFpb2'
但是 this.clan.officers['sJUZKKhLDvPDBWPILdzCN9waFpb2'] 純粹是胡言亂語。
如果要檢查給定字符串是否存在於值數組中,可以使用Array.prototype.includes()
。
isOfficer = officers.includes('sJUZKKhLDvPDBWPILdzCN9waFpb2');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.