初始化數據
// 定義三個數組:
// arr:主數組,包含了多個消息對象
// arr2:包含了部分消息ID和未讀標記的數組
// arr3:初始為空,后面用於存放過濾后的結果
let arr = [
{ messageId: 1154198777724319, appid: "xiniv2", bussType: 1, type: 2},
{ messageId: 1154247598220693, ppid: "xiniv2", bussType: 1, type: 2},
{ messageId: 1154247598222223, appid: "xiniv2", bussType: 1, type: 2},
{ messageId: 1154247598222224, appid: "xiniv2", bussType: 1, type: 2},
{ messageId: 1154247598222225, appid: "xiniv2", bussType: 1, type: 2}
];
let arr2 = [
{"messageId":1154198777724319,"unread":true},
{"messageId":1154247598220693,"unread":true}
];
let arr3 = [];
// 准備進行過濾
// 為了優化后續的過濾操作,使用兩個臨時數組:
// tempArray1:用於存放arr2中的消息ID作為鍵,值為true
// tempArray2:用於存放過濾后的結果,即arr中存在但arr2中不存在的元素
var tempArray1 = [];
var tempArray2 = [];
// 填充臨時數組tempArray1
// 遍歷arr2,將消息ID作為鍵存儲到tempArray1中
for(let i = 0; i < arr2.length; i++){
tempArray1[arr2[i].messageId] = true;
}
// 進行過濾操作
// 遍歷arr數組,如果tempArray1中不存在arr的消息ID,則將此元素添加到tempArray2
for(let i = 0; i < arr.length; i++){
if(!tempArray1[arr[i].messageId]){
tempArray2.push(arr[i]);
}
}
// 最終,tempArray2中存放的就是arr中存在但arr2中不存在的元素