js数组去重方法(9.9)

// 第一种 newSet去重
var arr = [1, 2, 3, 2, 1, 23, 1, 3, 12, 3]
var lsy = new Set(arr)
console.log(lsy)

//第二种sort排序去重

// 这种方法的思路是:先用sort()方法把arr排序,那么排完序后,
// 相同的一定是挨在一起的,把它去掉就好了,因为数组重新排序了,重复的都挨在一起,
// 那么这就保证了重复的这几个值只有第一个会被push进来,
// 其余的都和新数组的被push进来的这个元素相等,会被pass掉,也达到了去重的效果。

let starr = []
arr.sort((a, b) => {
  return a - b
})
arr.forEach((val, index) => {
  // console.log(val)
  // console.log(index)
  if (val != arr[index + 1]) {
    starr.push(val)
  }
})
console.log(starr)

// 第三种遍历数组法
// 这种方法很好理解,利用了indexOf()方法(indexOf()方法如
// 果查询到则返回查询到的第一个结果在数组中的索引,如果查询不到则
// 返回 - 1)。先创建一个新的空数组用来存储新的去重的数组,然后遍历ar
// r数组,在遍历过程中,分别判断newArr数组里面是不是有遍历到的arr中的元素,如果没有,
// 直接添加进newArr中,如果已经有了(重复),那么不操作,那么从头到尾遍历一遍,正好达到了去重的目的。
var lyra = []
for (var i = 0; i < arr.length; i++) {
  if (lyra.indexOf(arr[i]) === -1) {
    lyra.push(arr[i])
  }
}
console.log(lyra)

//第四种数组下标判断法

// 这和第一种方法有重叠,不说多余的,直接看if这里,
// 在遍历arr的过程中,如果在arr数组里面找当前的值,
// 返回的索引等于当前的循环里面的i的话,那么证明这个值是第一次出现,
// 所以推入到新数组里面,如果后面又遍历到了一个出现过的值,
// 那也不会返回它的索引,indexof()方法只返回找到的第一个值的索引,
// 所以重复的都会被pass掉,只出现一次的值都被存入新数组中,也达到了去重的目的。
var syne = []
for (var i = 0; i < arr.length; i++) {
  if (arr.indexOf(arr[i]) === i) {
    syne.push(arr[i])
  }
}
console.log(syne)

//第五种遍历数组法

// 思路:两层for循环,外面一层是控制遍历到的前一个arr中的元素,
// 里面一层控制的是第一层访问到的元素后面的元素,不断的从第0个开始,
// 让第0个和他后面的元素比较,如果没有和这个元素相等的,则证明没有重复,
// 推入到新数组中存储起来,如果有和这个元素相等的,则pass掉它,
// 直接进入下一次循环。从第1个开始,继续和它后面的元素进行比较,同上进行
// ,一直循环到最后就是:不重复的都被推入新数组里面了,而重复的前面的元素被pass掉了,
// 只留下了最后面的一个元素,这个时候也就不重复了,则推入新数组,过滤掉了所有重复的元素,
// 达到了去重的目的。
var newArr = []
for (var i = 0; i < arr.length; i++) {
  for (var j = i + 1; j < arr.length; j++) {
    if (arr[i] === arr[j]) {
      i++
      j = i
    }
  }
  newArr.push(arr[i])
}
console.log(newArr)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值