初始化数据
// 定义三个数组:
// 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中不存在的元素