JS中求两个JSON数组的交集、并集(数组去重)和补集

JS中求两个JSON数组的交集、并集(数组去重)和补集。

这里使用了Array的filter()、some()两个方法。

假设有两个如下JSON数组:
		var a = [{a: 1}, {a: 3}, {a: 5}];
		var b = [{a: 1}, {a: 2}, {a: 3}, {a: 4}, {a: 5}];
		
		//交集
		var result = b.filter(x=>{
			return a.some(y=>{
				return x.a==y.a;
			})
		})
		console.log(result)  //[{a: 1}, {a: 3}, {a: 5}]
	   
	   
	   //并集(去重)
	   var c = a.concat(b);
	   function removeRepeat(arr){
		   let result = [];
		   let temp = {}
		   arr.forEach(item=>{
			   if(!temp[item.a]){
				   result.push(item)
				   temp[item.a] = true;
			   }
		   })
		   return result
	   }
	   console.log(removeRepeat(c))
	   
		// 补集
		var c = a.concat(b);
		var result = c.filter(x=>{
			return !a.some(y=>{
				return x.a==y.a;
			})&&b.some(z=>{
				return x.a==z.a;
			})
		})
		console.log(result) //[{a: 2},{a: 4}]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值