数组对象的合并去重,常用方法
前端处理数据的时候,常见的数组对象,合并并且去重,两个数据如下:
let json1=[ {id:1,name:"aaa"}, {id:2,name:"bbb"}, {id:3,name:"ccc"}, ] let json2=[ {id:1,name:"aaa"}, {id:2,name:"bbb"}, {id:4,name:"ddd"}, ]
方法一:
双循环,遍历添加
for (var obj in json1){//临时选择数据
var includeThis = false;
for(var dbj in json2){ //右侧table里的数据
if(json1[obj].id==json2[dbj].id){
includeThis=true;
}
}
if(includeThis==false){
json.push(storageArea[obj]);//把当前临时数据的这一条放到右侧table的数据里
}
}
也可以先合并在去重
let json = json1.concat(json2); //两个数组对象合并
let newJson = []; //盛放去重后数据的新数组
for(item1 of json){ //循环json数组对象的内
let flag = true; //建立标记,判断数据是否重复,true为不重复
for(item2 of newJson){ //循环新数组的内容
if(item1.id==item2.id){ //让json数组对象的内容与新数组的内容作比较,相同的话,改变标记为false
flag = false;
}
}
if(flag){ //判断是否重复
newJson.push(item1); //不重复的放入新数组。 新数组的内容会继续进行上边的循环。
}
}
console.log("newJson",newJson);
方法二 javascript 数组的高阶函数reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
单个数组对象去重 let b = [{ id: '4', result: '第三' }, { id: '2', result: '第四' }, { id: '2', result: '第二' }] let d = [] let hash = {} d = b.reduce((item, next) => { hash[next.id] ? '' : hash[next.id] = true && item.push(next) return item }, []) console.log(d, '看看看')
用上面的两个数组对象来实现
多个数组对象去重
let newDatas = [...this.json1, ...this.json2]; let d = [] let hash = {} d = newDatas.reduce((item, next) => { hash[next.id] ? '' : hash[next.id] = true && item.push(next) return item }, []) console.log(d);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通