第一种方法javascript
Array.from方法能够将Set结构转为数组java
let items = new Set([1, 2, 3, 4, 5]); let array = Array.from(items);
这就是提供了一种数据去重的方法数组
function uniq(array) { return Array.from(new Set(array)); } uniq([1, 2, 3, 3]) //[1, 2, 3]
第二种方法函数
运用扩展运算符(...)提供了一种更便捷的去重方法this
let arr = [2, 3, 3, 5, 6, 2]; let uniq = [...new Set(arr)]; //[2, 3, 5, 6]
第三种方法prototype
这是一种原生JS的去重方法,借助一个空数组来实现去重,便于理解底层原理(xyz函数带有参数)code
function xyz(arr) { let a= []; arr.forEach((item,index) => { a.indexOf(item) ===-1 ? a.push(item) : '' }) return a; } console.log(xyz([1,2,3,2,3])); //[1, 2, 3]
第四种方法ip
同上(xyz函数不带参数)
拓展:须要注意的一点就是此函数能够传多个数组,可是要看arguments[index]
决定执行哪一个数组,默认是执行第一个。原型链
function xyz() { let a= []; // Array.from(arguments[0]).forEach((item,index) => { // a.indexOf(item) ===-1 ? a.push(item) : '' // }) // Array.prototype 能够换成[] Array.prototype.forEach.call(arguments[1], (item,index) => { a.indexOf(item) ===-1 ? a.push(item) : '' }) return a; } console.log(xyz([1,2,3,2,3],[2,2,1])); //[1, 2, 3]
第五种方法get
这是一种基于数组原型链的去重方法
Array.prototype.uniq = function() { let a= []; this.forEach((item,index) => { a.indexOf(item) ===-1 ? a.push(item) : '' }) return a; } console.log([1,2,1,3].uniq()); //[1, 2, 3]
这么多方法你知道哪几种呢?
如需转载请注明转载处:牧码人keephhh
https://www.keephhh.com/