php 数组去重并集,求两个数组的并集减去交集的部分,有什么好的算法?

比较朴实的算法...,思路就是先对两个数组去重——>求交集——>求并集——>并集减交集,代码如下:

function newarr(arr,brr) {

//去掉两个数组中各自重复的部分

function unique (crr) {

let brr =[];

for (let i=0; i

if (brr.indexOf(crr[i]) < 0) {

brr.push(crr[i]);

}

}

return brr;

}

//去重后的两个新数组

let purearr = unique(arr),

purebrr = unique(brr);

let sum=[],

intersection=[];

//求两个已去重数组的交集

function same(arr,brr) {

let samearr = [];

for (let i=0; i

let temp = arr[i];

for (let j=0; j

if (brr[j] === temp) {

samearr.push(brr[j]);

}

}

}

return samearr;

}

intersection=same(purearr,purebrr);

//求两个已经各自去重的数组的并集

function add (arr,brr) {

for (let i=0; i < arr.length; i++) {

let temp = arr[i];

for (let j=0; j

if (purebrr[j] === temp) {

purebrr.splice(j,1);

}

}

}

return arr.concat(brr);

}

sum = add(purearr,purebrr)

//对并集的数组去掉交集的元素

for (let i=0; i

let temp=intersection[i];

for (let j=0; j

if (sum[j] === temp) {

sum.splice(j,1);

}

}

}

return sum;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值