第一种:利用Map对象和数组的filter方法
代码如下所示。
let arr1=[1,’1’,1,undefined,undefined,NaN,NaN]; 函数unique (arr ) {const res=new Map; returnARR.filter((a )=! RES.has(a ) RES.set(a,1 ) ) letnewarr=unique ) arr1); console.log(newarr ); 结果如下图所示。
通过打印,我们发现确实实现了我们想要的效果。 那么让我简单地说明一下。
Map对象是ES6提供的新数据结构,has返回一个布尔值,指示当前Mp对象中是否存在值,然后set将Map对象设置为key/value。 filter ()方法通过检查指定数组中满足条件的所有元素来创建新数组。 因此,将filter方法与Map对象组合可以获得数组的权重效果
第二种:利用Set对象和数组的Array.from方法
也粘贴相关的代码片段。
let arr1=[1,’1’,1,2,3,4,undefined,undefined,NaN,NaN]; 函数unique (arr ) {const res=new Map; returnArray.from(newset(arr1) ); }letnewARR=unique(ARR1); console.log(newarr ); 结果如下图所示。
简而言之,第二种方法比第一种更简单。 让我简单地说明一下。
Set是ES6新提供的数据结构,与数组相似,但本身没有重复值。 Array.from方法用于将两种类型的对象转换为真正的数组:类似于数组的对象(array-like object )和可遍历对象。 这包括在ES6中添加的数据结构Set和映射。 因此,通过组合set和Array.from,可以获得数组的权重效果。
第三种:利用Set+扩展运算符 …
粘贴相关代码:
let arr1=[1,’1’,2,3,4,4,4,5,undefined,undefined,NaN,NaN]; letnewarr=[.newset(arr1) ]; console.log(newarr ); 结果如下图所示。
这是利用ES6的新特性实现数组权重的三种方法。 这三种方法的一个共同优点是代码简洁,对于undefined和NaN行业也可以同样达到权重的效果。