JS合并数组对象中重复数据

120 篇文章 9 订阅
23 篇文章 3 订阅
这篇博客展示了如何使用 JavaScript 处理数组中的对象,通过遍历和比较属性,将具有相同 a、b 和 c 属性的对象进行合并,将它们的 d 和 e 属性值合并到一个列表中。这种方法对于数据整合和清洗非常实用。
摘要由CSDN通过智能技术生成

https://www.jianshu.com/p/c50515d369c4 

   <script type="text/javascript">
		var oldData = [
			{ a: 1, b: 2, c: 3, d: 2, e: 1 },
			{ a: 1, b: 2, c: 3, d: 3, e: 2 },
			{ a: 1, b: 2, c: 3, d: 4, e: 3 },
			//{ a: 2, b: 3, c: 4, d: 4, e: 2 },
		]
		var oldDataRule = []
		oldData.forEach(el => {
			var oldObj = {
				a: el.a,
				b: el.b,
				c: el.c,
				list: []
			}
			oldObj.list.push({ repeatd: el.d, repeate: el.e });
			oldDataRule.push(oldObj)
		})
		console.log(oldDataRule) //abc 带list
		// 合并相同的数据
		var newData = []
		var newObj = {}
		oldDataRule.forEach((el, i) => {
			if (!newObj[el.a] || !newObj[el.b] || !newObj[el.c]) {
				newData.push(el);
				newObj[el.a] = true;
				newObj[el.b] = true;
				newObj[el.c] = true;
				console.log(newData,'newData') //相当于复制一份 oldDataRule来比较
			} else {
				newData.forEach(els => {
					if (els.a === oldDataRule[i].a && els.b === oldDataRule[i].b && els.c === oldDataRule[i].c) {
						els.list = els.list.concat(oldDataRule[i].list);
						// el.list = [...el.list, ...oldDataRule[i].list]; // es6语法
					}
				})
			}
		})
	</script>

console.log(oldDataRule)

console.log(newData)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值