菜逼的数组去重

81 阅读1分钟

1.相邻项的处理方案

  let ary = [12,12,23,23,44,55,66,77,66,44,99]
  // 相邻项的处理方案
  ary.sort((a,b)=>a-b);
  console.log(ary);
  ary=ary.join('@')+'@';
  console.log(ary);
  let reg = /(\d+@)\1*/g;
      arr= []
  ary.replace(reg,(val,group1)=>{
      console.log(val,group1);
      arr.push(Number(group1.slice(0,group1.length-1)))
  })
  console.log(arr);

2.对象键值对

//  拿数组中的每一项向新容器中存储 如果存储过了,删除掉当前项
    let obj = {};
    for (let i = 0; i < ary.length; i++) {
         const item = ary[i];
         if(typeof obj[item]!=='undefined'){
             ary[i] = ary[ary.length-1]
             ary.length--;
             i--
             continue;
         }
         obj[item] = item;
     }
     obj=null
     console.log(ary);

3.set

    let arr = new Set(ary);
    console.log(Array.from(arr));
    console.log([...arr]);

4.es5

	let arr = []
    for (let i = 0; i < ary.length-1; i++) {
        let item = ary[i];
            args = ary.slice(i+1)
        if(args.indexOf(item)>-1){

        }else{
            arr.push(item)
        }
    }
	let arr = []
    for (let i = 0; i < ary.length-1; i++) {
        let item = ary[i];
            args = ary.slice(i+1)
        if(args.indexOf(item)>-1){
            ary[i] = null
        }
    }
    current = ary.filter(item=>item!==null)
	let arr = []
    for (let i = 0; i < ary.length-1; i++) {
        let item = ary[i];
            args = ary.slice(i+1)
        if(args.indexOf(item)>-1){
            ary[i] = ary[ary.length-1]
            ary.length--;
            i--
        }
    }