我想過濾我的快照,但有時我得到 [undefined],我不想在里面回傳 undefined,有什么問題?
return snapshot.docs.map((doc) => {
const jn = JSON.parse(doc.data().jsonData)
const res= jn.attributes.find(t => t.typet === tokenAttrs[0].name);
if(res){
return doc.data()
}
})
uj5u.com熱心網友回復:
可能找不到匹配條件的屬性,因為res未定義。你應該檢查一下。
uj5u.com熱心網友回復:
您可以這樣使用該filter功能:
return snapshot.docs.map(doc => {
const jn = JSON.parse(doc.data().jsonData);
const res = jn.attributes.find(t => t.typet === tokenAttrs[0].name);
if (res) return doc.data();
}).filter(_ => _ !== undefined);
undefined這將從陣列中洗掉值。
uj5u.com熱心網友回復:
解決方法很多。一種是使用 foreach 并將新值推送到新陣列。或者您在發回結果之前過濾掉結果中的空值。像那樣:
const r = snapshot.docs.map((doc) => {
const jn = JSON.parse(doc.data().jsonData)
const res= jn.attributes.find(t => t.typet === tokenAttrs[0].name);
if(res){
return doc.data()
} else {
return null;
}
})
// then remove all empty values
return r.filter(n => n)
與 forEach()
const res = [];
snapshot.docs.forEach((doc) => {
const jn = JSON.parse(doc.data().jsonData)
const res= jn.attributes.find(t => t.typet === tokenAttrs[0].name);
if (res){
res.push(doc.data());
}
})
return res;
uj5u.com熱心網友回復:
Array.prototype.find將搜索陣列并獲取所有匹配資料。如果沒有找到,則回傳undefined。您只需要創建一個邏輯OR運算式。請參見下面的代碼:
return snapshot.docs.map((doc) => {
const jn = JSON.parse(doc.data().jsonData)
// will now return null if there's no matched data.
const res = jn.attributes.find(t => t.typet === tokenAttrs[0].name) || null;
if(res){
// this will not return if `res` is null
return doc.data()
} else {
// you could do `else` here if you want to do something if there's no matched data.
// Do something
}
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/482679.html
標籤:javascript 火力基地
下一篇:組圖js中每個條的水平漸變
