JavaScript中数组去重的多种方式

1.使用ES6语法
  a.最简洁的方法:使用set

const arr = [5,5,3,4,6,5,8,6];
console.log(Array.from(new Set(arr))) // [4,5,3,6,8]
console.log([...new Set(arr)]) // [4,5,3,6,8]

  b. reduce + includes

const a = arr.reduce((pre,cur) => 
    pre.includes(cur) ? pre : [...pre,cur],[]);
console.log(a)

  c.利用filter去重

const b = arr.filter((item,index,arr) => arr.indexOf(item,0) === index)
console.log(b)

  d.利用hasOwnProperty + filter去重

function duplicate(arr){
            var obj = {};
            return arr.filter(function(item,index,arr){
                return obj.hasOwnProperty(typeof item + item) ? 
                                    false :(obj[typeof item + item] = true)
            })
        }
console.log(duplicate(arr))

 2.排序 + 正则

let array = [1,2,2,3,1,4,5,6,4];
       array.sort((a,b)=>a-b);
       array = array.join('@')+'@';
       let reg = /(\d+@)\1*/g;
       let arr = [];
       array.replace(reg,($,$1)=>{
            arr.push(parseFloat($1));
       })
console.log(arr)

  

 3.持续更新中。。。

猜你喜欢

转载自www.cnblogs.com/endoraLiu/p/12637762.html