对于js去重数组的办法其实有很多,如果采用以前的方式,无疑代码量激增;今天来聊聊ES方式的数组去重方式
利用Set+扩展运算符 …
此种办法无疑是最简单的方式
代码如下
let arr = [1,'1',2,2,2,3,'3',4,4,undefined,undefined,null,'','',NaN,NaN]
let arrnew = [...new Set(arr)]
console.log(arrnew)
//运行结果 [1, '1', 2, 3, '3', 4, undefined, null, '', NaN]
Set是ES6新提供的数据结构,类似于数组,但是本身没有重复值。
第二种方式 利用Set对象和数组的Array.from方法
代码如下
let arr = [1,'1',2,2,2,3,'3',4,4,undefined,undefined,null,'','',NaN,NaN]
function unique(arr){
return Array.from(new Set(arr));
}
let arrnew = unique(arr);
console.log(arrnew)
//运行结果 [1, '1', 2, 3, '3', 4, undefined, null, '', NaN]
简单来说,第二种方法比第一种要复杂。同样来简单解释一下。Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)。所以set结合Array.from同样可以达到数组去重的效果。不过需要注意的是,主流浏览器像Chrome,Firfox,Opera,Safari,包括微软的Edge,都是支持的,但是唯独IE系列不支持。
今天介绍的最后一种方式 利用Map对象和数组的filter方法
代码如下
let arr = [1,'1',2,2,2,3,'3',4,4,undefined,undefined,null,'','',NaN,NaN]
function unique(arr){
let arr1 = new Map();
return arr.filter((a) => !arr1.has(a) && arr1.set(a,1));
}
let arrnew = unique(arr);
console.log(arrnew)
//运行结果 [1, '1', 2, 3, '3', 4, undefined, null, '', NaN]
通过打印我们发现,确实实现了我们想要的效果。那么下面简单来解释一下。1.Map对象是ES6提供的一个新的数据结构,其中has的办法是返回一个布尔值,表示某个值是否存在当前的Mp对象之中,set的办法是给Map对象设置key/value。2.filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。所以说,Map对象结合filter方法可以达到数组去重的效果
你好,看完你的博客文章,感觉很不错!希望与你网站首页友情链接
流量卡知识网
53go . cn
专注于移动/联通/电信推出的大流量多语音活动长短期套餐手机卡的相关知识的介绍普及
不好意思,暂不添加无备案的网站