博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
两数组比较,筛选出不同元素(附数组去重)
阅读量:4705 次
发布时间:2019-06-10

本文共 1082 字,大约阅读时间需要 3 分钟。

群里闲聊,聊到了这个问题,有大佬回答,特此记录学习;
先说一下问题:
 
 
两种方式:一种是使用ES6的写法,逼格高大上:
    
let a=[1,2,3,4], b=[1,2,3,5,4,6],c = [...a, ...b],d = new Set(c),e = Array.from(d),f = [...e.filter(_=>!a.includes(_)),...e.filter(_=>!b.includes(_))];console.log(f);//[5, 6]
 
 
我知道ES6已经流行开了,但对我来说还是某些查了资料才看明白,菜啊!
首先,其中的 "..." ,三个点也就是省略号是是ES对数组新添加的方法,学名叫做扩展运算符,他的主要作用有
制数
组、
合并数组、
与解构赋值结合、
字符串转数组、
实现了 Iterator 接口的对象、
Map 和 Set 结构,Generator 函数(),
这里用到的就是数组的合并,将其合并为一个数组。
然后,d的作用,转化为一个set,set是ES6提供的一种数据结构,这里主要用到是它不包含重复元素的特点,这样转化成了一个没有重复元素的数据结构(不敢说成集合和数组),数组去重so easy!
再然后,e变量作用简单明了,把d的这种类数组数据结构转化为数组,数组中包含的仍是两个数组的并集
再然后,f变量里面东西就多点了,首先是includes方法。看名称应该知道是包含的意思,这个就是a包含这个元素则返回true,否则返回false,数组的filter方法在接受到includes函数的结果取反之后,就筛选除了e中不包含a的元素,再加上e中不包含b的元素,重新组成一个数组,这个数组就是最后的结果;
我尝试用韦恩图(就是交集、并集、取反那一堆)的方式解释出来,但是数学太渣了,没办法,你们谁数学好的可以私我发过来。。。
 
第二种方法:(接地气,兼容性好,支持IE8)
function diff(arr1,arr2){var a = [];var b = [];for(var i=0;i
 
 
 
这个方法一看就明白,简单易懂,并且也是较为稳定的方法,这个不会的就自行谷歌吧。。

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

 
 
 
 

转载于:https://www.cnblogs.com/DreamSeeker/p/5379c1c3b7c5b342a0ca7c118eb083a2.html

你可能感兴趣的文章
poj 1979 Red and Black(dfs)
查看>>
【.Net基础03】HttpWebRequest模拟浏览器登陆
查看>>
zTree async 动态参数处理
查看>>
Oracle学习之常见错误整理
查看>>
数据库插入数据乱码问题
查看>>
altium annotate 选项设置 complete existing packages
查看>>
【模式识别与机器学习】——SVM举例
查看>>
【转】IT名企面试:微软笔试题(1)
查看>>
IO流入门-第十章-DataInputStream_DataOutputStream
查看>>
DRF的分页
查看>>
Mysql 模糊匹配(字符串str中是否包含子字符串substr)
查看>>
python:open/文件操作
查看>>
流程控制 Day06
查看>>
Linux下安装Tomcat
查看>>
windows live writer 2012 0x80070643
查看>>
tomcat 和MySQL的安装
查看>>
git常用操作
查看>>
京东SSO单点登陆实现分析
查看>>
u-boot启动第一阶段
查看>>
MySQL批量SQL插入性能优化
查看>>