簡體   English   中英

在 Javascript react-native 中過濾 object

[英]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的列表,你可以使用snapshotforEach方法來構建它。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM