所以我正在構建一個應用程式模型,在發送訊息后,我需要通知所有聊天參與者他們有一條未讀訊息,我的參與者型別有一個名為“未讀”的欄位,它是一個像這樣的物件陣列
unread:[
{chatId:'13213', msgs:3},
{chatId:'132546', msgs:1}
];
聊天 id 參考了唯一的對話,并且 msgs 編號顯示已發送的新訊息,msgs 陣列的長度是您擁有的未讀訊息的數量,我想要做的是,當發送新訊息時,我想回圈遍歷未讀訊息陣列和
條件一陣列完全為空:
- 向它添加一個物件
條件兩個陣列已經有物件,然后找到與我將傳入函式的chatId相同的一個并增加訊息數
條件三,陣列已經有物件但沒有我提供的chatId,在這種情況下創建一個新物件并將其添加到現有陣列中。
關于如何解決這個問題的任何想法?
我嘗試執行以下操作,但它不起作用
emp.unread.length < 1
? [{ chatId: chatId, unread: 1 }]
: emp.unread.map((cht) => {
if (cht.chatId === chatId) {
return {
...emp.unread,
chatId: chatId,
unread: cht.unread 1,
};
} else {
return { ...emp.unread, chatId: chatId, unread: 1 };
}
}),
uj5u.com熱心網友回復:
您可以嘗試使用以下 if 條件:
您可以使用過濾器/查找來正常完成任務。可能還有其他資源消耗較少的方式,但這樣您就可以完成任務。
if(unread.length == 0 ){
//pushing the object
}else{
if(chechExistingChat(chatid)){
addOnExistingChat(chatId)
}
else{
//unread.push(new object)
}
}
function checkExistingChat(chatId){
let sameChatArray = unread.filter((item)=>{
return item.chatId == chatId
})
return !!sameChatArray.length
}
function addOnExistingChat(chatId){
let finalArray = unread.map((item)=>{
if(item.chatId == chatId){
return {...item,msgs:item.msgs 1}
}
return item
})
return finalArray
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/519807.html
標籤:反应数组循环目的
上一篇:PowerQueryList.Generate回圈分頁API呼叫
下一篇:回圈時每3次迭代后增加一年
