JavaScript数组去重的几种方法

6 篇文章 0 订阅
  1. 新建数组法
  2. 利用object/map/set去重
  3. Filter与indexOf法
  4. 先排序再移除法
  5. 同一个数组删除法

    

// 新建一个数组 如果新数组中没有的元素才加入进去
let a = ["a", "a", 1, 1, 2, 2, "b", "b"];
let newArr = [];
for (let i = 0; i < a.length; i++) {
  let exist = false;
  for (let member of newArr) {
    if (member === a[i]) {
      exist = true;
      break;
    }
  }
  if (!exist) {
    newArr.push(a[i]);
  }
}
// 利用对象对数组去重
let a = ['a','a',1,1,2,2,'b','b']
let b = {}

a.forEach((item,i)=>{
    b[item] = item
})
Array.from(Object.values(b))
//利用map对数组去重
let a = ['a','a',1,1,2,2,'b','b']
let b = new Map()

a.forEach((item,i)=>{
  b.set(item,item)
})
Array.from(b.values())
//利用set去重
let a = ['a','a',1,1,2,2,'b','b']
let c = newe Set(a)
Array.from(c)
//简化写法 [...new Set(a)]

// 利用filter方法去重
let a = [1,2,'a',1,2,2,2,'a','b']
let newArr = []

for(let i=0;i<a.length;i++){    
    //说明不是重复的元素  
   if(i=== a.indexOf(a[i])){
      newArr.push(a[i])
   }else if(a.indexOf(a[i])>=0){
     continue
  }
}
// 简单写法 a.filter((item,i)=>i===a.indexOf(item))

 

// 先排序后删除重复元素
let a = [1,2,'a',1,2,2,'a','b']
a.sort()
//从后往前遍历
while(l--&&l>0){    
  if(a[l] === a[l-1]){
      a.splice(l, 1)
  }
}
//从前往后遍历
for(let i=0;i<l - 1;i++){
  if(a[i] === a[i+1]){
     a.splice(i,1)
     l--; //长度--
     i--; //下标减一 否则会跳过一个
  }
}
//同一个数组删除法
let a = [1,2,'a',1,2,2,'a','b']
for(let i=0;i<a.length;i++){
   for(let j=i+1;j<a.length;j++){
      if(a[i]===a[j]){
          a.splice(i,1)
          l--
          i--
          break;
      }
   }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值