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

如果是生产环境下,我会引入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中已经相等的元素,这里就不写了。

python对比两个数组的差异_数组对比差异相关推荐

  1. python求两条直线的交点_如何计算两条线的交点?

    不能袖手旁观 所以我们有线性系统:A1 * x + B1 * y = C1 A2 * x + B2 * y = C2 让我们用克莱默法则来做,这样就可以在行列式中找到解:x = Dx/D y = Dy ...

  2. java中数组的含义_数组

    数组(Array)是有序的元素序列.[1] 若将有限个类型相同的变量的集合命名,那么这个名称为数组名.组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量.用于区分数组的各个元素的数 ...

  3. java 数组的方法_数组常用方法

    [TOC] # 定义 ~~~ //初始化一个长度为8的定长数组,其所有元素均为0 val arr1 = new Array[Int](8) //直接打印定长数组,内容为数组的hashcode值 pri ...

  4. 二维数组各行求和_数组入门 | 数组的维度和尺寸

    有点类似于数学中的矩阵 数组 具有行.列及尺寸的特征,常量数组中使用分号或逗号分隔符来辨识行列,而区域数组的行列结构则与其引用的单元格区域保持一致. 二维数组 数组的尺寸同时由行列两个元素来确定,M行 ...

  5. Java对比两张Excel表的数据,java对比两个excel或者一张excel和数据库的一张表的数据是否相同,两张excel表格匹配相同的数据库...

    excel自动从数据库匹配相应的数据 vlookup函数:vlookup(lookup_value,table_array,col_index_num,[range_lookup]) 第一个:look ...

  6. 一维数组和二维数组的区别_数组指针和指针数组的区别

    数组指针和指针数组的区别 - hongcha_717 - 博客园​www.cnblogs.com 数组指针(也称行指针) 定义 int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整 ...

  7. dataframe数组做元素_数组 array 矩阵 list 数据框 dataframe

    #R语言备忘录三# #数组array和矩阵matrix.列表list.数据框dataframe #数组 #数组的重要属性就是dim,维数 #得到4*5的矩阵 z dim(z) z #构建数组 x #三 ...

  8. java数组线性查找_数组查找: 线性查找与二分查找

    前言 从数组中查找你需要的数据,是一个很常见的需求,那么当你查找所需数据时,用什么方法查找速度最快? 本文将通过图文形式,详细讲解线性查找与二分查找,并用JavaScript将其实现,欢迎各位感兴趣的 ...

  9. mysql对比两个字段差异_如何对比两个表字段差异

    做这个项目,以前只在业务表增加字段,而没在其历史表增加对应字段 最近客户需要将业务表和历史表的字段保持一致.于是用这个语句来进行对比即可,如果查出来有数据,则表示有字段差异 --2个表比较 DECLA ...

最新文章

  1. 四肢切割_四肢瘫痪者用大脑信号和先进的假肢完成吃饭动作
  2. Linux疑难杂症解决方案100篇(十)-uptime命令查看linux系统负载
  3. VS2002 与 IIS6.0的一个bug
  4. PHP 5.6 开启CURL HTTPS 类型
  5. C# Winform用户体验整理【原】
  6. leetcode955. Delete Columns to Make Sorted II
  7. 数据结构简答题和论述题
  8. Android -- 无线网络配置信息的管理者WifiConfigStore简介
  9. 中国公有云三巨头,同时支持Rancher Kubernetes平台 1
  10. 计算机桌面显示保护眼睛设置,电脑屏幕怎么设置才能保护眼睛
  11. 00002__Proxyee-down__百度网盘下载加速软件
  12. Spring Boot Shiro原理系列
  13. C# ActiveX 网页打包验证自动升级
  14. 睿智的目标检测27——Pytorch搭建Faster R-CNN目标检测平台
  15. The POODLE attack (SSLv3 supported) 漏洞修复
  16. 惠普bios硬重置_惠普笔记本电脑BIOS恢复【五个免费修复步骤】
  17. SQL Server 数据库之分离和附加数据库
  18. 微信定位精灵 android,微信定位精灵安卓版下载
  19. 抽象语法树AST的全面解析(一)
  20. 京东集团副总裁李大学:像CEO一样思考 - Dancen的专栏 - 博客频道 - CSDN.NET

热门文章

  1. 从被遗忘到牛市龙头,一文梳理ETH 2020爆发逻辑
  2. 彻底疯狂!美团数字人民币交易用户数同比增长超5倍!心动ing...
  3. 我和ChatGPT聊了聊:它承认自己没有人性
  4. 淄博烧烤火了,其他的烧烤靠什么火呢
  5. vue+mysql实现前端对接数据库
  6. scratch少儿编程课程是什么
  7. python 人民币兑美元汇率代码_Python获取美元人民币实时汇率
  8. Cmd模式下的入侵技术大全
  9. 钱从哪里来--读书笔记
  10. 给予员工更好的激励- - 俞敏洪