[英]Filtering object in Javascript react-native
我有這樣的數據結構:這是我的聊天組件的源代碼: https://pastebin.com/JJQFQyHi
每個聊天都有兩個成員,我想在我的聊天列表中顯示其他人的數據 profile_picture 和用戶名。 所以我想刪除不必要的數據。 我使用 firebase 實時數據庫。 這就是我試圖擺脫不必要的數據的方式。
getChats = _userId => {
let data;
var readedData = firebase
.database()
.ref('chats')
.orderByChild('members/' + _userId)
.equalTo(true);
readedData.once('value', snapshot => {
this.setState({ chats: snapshot.val() });
// console.log(JSON.stringify(this.state.chats));
data = snapshot.val();
delete data._userId;
delete data.members;
console.log(data);
});
};
控制台日志:
> {"-M4NzlagjmeFH7IR_Api": {"lwcIQTcpAae4e38hrD2K5Ar76W93": {"data":
> [Object]}, "members": {"lwcIQTcpAae4e38hrD2K5Ar76W93": true,
> "tempuser": true}, "tempuser": {"data": [Object]}},
> "-M4O-aIxt9w2iKuCDweN": {"lwcIQTcpAae4e38hrD2K5Ar76W93": {"data":
> [Object]}, "members": {"lwcIQTcpAae4e38hrD2K5Ar76W93": true,
> "tempuser": true}, "tempuser": {"data": [Object]}},
> "-M4Q05H1lEUIyWqLJyoQ": {"lwcIQTcpAae4e38hrD2K5Ar76W93": {"data":
> [Object]}, "members": {"lwcIQTcpAae4e38hrD2K5Ar76W93": true}},
> "-M649remSnfBLBuYJIXO": {"lwcIQTcpAae4e38hrD2K5Ar76W93": {"data":
> [Object]}, "members": {"lwcIQTcpAae4e38hrD2K5Ar76W93": true,
> "tempuser": true}, "messages": {"-M64A0ydh-WJstJIFIr1": [Object],
> "-M66cLC6OjQhlyNN5uDq": [Object], "-M66eWivUodiVtHIkfGv": [Object]},
> "tempuser": {"data": [Object]}}}
當您調用snapshot.val()
時,您會得到一個 object,如控制台日志中所示。 然后將此值分配給data
。
當您嘗試從該data
object 中delete
密鑰時,Javascript 會嘗試從 object 的頂層刪除它們。 由於頂層沒有具有給定名稱( members
或_userId
)的屬性,因此無法過濾掉任何內容。
如果你需要一個tempuser
的列表,你可以使用snapshot
的forEach
方法來構建它。
readedData.once("value", (snapshot) => {
const userData = [];
snapshot.forEach((data) => {
userData.push(data.tempuser)
});
console.log(userData); // this should contain the tempusers.
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.