关于数组合并及对象去重的问题
时间:2022-07-23
本文章向大家介绍关于数组合并及对象去重的问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
写这篇文章是源于群内的朋友的问题,今天早上,像往常一样摸鱼,发现一个妹子发群里问了一个问题。
事情的经过大概是这样的
image.png
总的来说就是后端给他返回了一个对象,对象内有2个数组,2个数组中的内容不一样,但是有相同的id,他需要把们合并到一个数组中,并且保留不重复的属性
简单的模拟一下妹子的数据结构,外层对象就不写了
const OrderNoList=[
{id:1,name:"aaa",},
{id:2,name:"bbb"},
{id:3,name:"ccc"},
]
const OrderProList=[
{id:1,time:"201800"},
{id:2,time:"201900",c:'333'},
{id:4,time:"201011"},
]
妹子最终的需求则是如下的格式
result=[
{id:1,name:"aaa",time:"201800"},
{id:2,name:"bbb",time:"201900",c:'333'},
{id:3,name:"ccc"},
{id:4,time:"201011"},
]
好了开始处理问题,其中使用到了数组的一些方法concat,push,filter,和for...of方法遍历对象
处理代码如下
const OrderNoList=[
{id:1,name:"aaa",},
{id:2,name:"bbb"},
{id:3,name:"ccc"},
]
const OrderProList=[
{id:1,time:"201800"},
{id:2,time:"201900",c:'333'},
{id:4,time:"201011"},
]
const obj = OrderNoList.concat(OrderProList);
let newObj = [];
for(item1 of obj){
let tmp = true;
let obj = {}
for(item2 of newObj){
if(item1.id == item2.id){
obj = {
...item1,
...item2
}
newObj = newObj.filter(curr=>curr.id != item1.id)
tmp = false;
}
}
if(tmp){
newObj.push(item1);
}else{
newObj.push(obj);
}
}
console.log(newObj)
最终的输出结果也是我们想要的:
最后得到了一个赞
不过还是希望更好一点的解法,哈哈哈
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Flutter基础widgets教程-ListTile篇
- 深入剖析 linux GCC 4.4 的 STL String
- Flutter基础widgets教程-MaterialApp篇
- 如何使用Visual Studio Code开发Django项目
- Flutter基础widgets教程-Padding篇
- Flutter基础widgets教程-Placeholder篇
- Flutter基础widgets教程-PopupMenuButton篇
- Python部署rad+xray自动化
- 2.建立第一个django项目与配置
- Flutter基础widgets教程-Radio篇
- Django中的QuerySet
- Python—requests模块详解
- python爬虫伪装请求头---fake-useragent
- Flutter基础widgets教程-RaisedButton篇
- 记一次 excel vba 参考手册爬虫实战,不必要的一次爬虫。