python对比两个数组的差异_数组对比差异

这篇博客介绍了如何在JavaScript中使用lodash库来找到两个数组的差集和交集。作者提供了_.difference和_.xor两个方法的示例,并分享了自己手写的difference1和difference2函数实现。文章还提及了代码优化的可能性。
摘要由CSDN通过智能技术生成

其实题主的问题应该是问如何找出两个数组之间的差集。

如果是生产环境下,我会引入lodash这个工具库(如果是java的话引入guava库),然后用以下代码实现该需求:

var arr1 = [1,2,3];

var arr2 = [1,4,5];

_.difference(arr1, arr2); //返回存在于arr1中,而不存在于arr2中的元素集合

// return [2,3]

_.xor(arr1, arr2); //返回arr1和arr2中除共同元素外的所有元素集合

// return [2,3,4,5]

看了一下lodash里面difference的实现,核心内容大概就是arr1正向遍历,arr2逆向遍历,我试着写了一下:

function difference1(arr1, arr2) {

var result = [];

for(var i = 0, length = arr1.length; i < length;i++) {

var value = arr1[i];

for(var j = arr2.length - 1;j >= 0; j--) {

if (value === arr2[j]) {

j = NaN;

break;

}

}

if (!isNaN(j) && result.indexOf(value) === -1) {

result.push(value);

}

}

return result;

}

// 并不能确定difference1和difference2的性能是否相等

function difference2(arr1, arr2) {

var result = [];

for(var i = 0, length = arr1.length; i < length; i++) {

var value = arr1[i];

if (arr2.indexOf(value) === -1) {

result.push(value);

}

}

return result;

}

当然,这段代码还有很多可以优化的地方,例如剔除arr2中已经相等的元素,这里就不写了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值