数组去重思路

41 阅读2分钟
// 数组去重方法一双for循环
  // const arr = [1, 2, 1, 1, 1, 1, 3, 2, 2, 4, 5, 5, 6, 7]

  // for (let i = 0; i < arr.length; i++) {
  //   // console.log(arr[i])//1, 2, 1, 1, 1, 1, 3, 2, 2, 4, 5, 5, 6, 7
  //   for (let j = i + 1; j < arr.length; j++) {
  //     // console.log(arr[j])// 2, 1, 1, 1, 1, 3, 2, 2, 4, 5, 5, 6, 7
  //     if (arr[i] === arr[j]) {
  //       arr.splice(j, 1)//把重复的删了,后面的元素会进行补位,如果多个连续相同会造成数组塌陷,需要j--,在j++,对删除的索引重新进行比对
  //       j--
  //     }
  //   }
  // }
  // console.log(arr)
// 数组去重方法二,indexOf
// const arr = [1, 1, 2, 1, 2, 3, 3, 4, 4, 4, 5, 5, 5,6]

// for(let i = 0; i < arr.length; i++){
//   // console.log(arr[i])// arr[i]:1, 1, 2, 2, 2, 3, 3, 4, 4, 4, 5, 5, 5,6
//   // console.log(i+1)// i+1:1,2,3,4,5,6,7,8,9,10,11,12,13,14
//    const index = arr.indexOf(arr[i],i+1)//arr.indexOf(要查找的元素,从哪个索引开始,默认是0开始),找到返回位置对应索引,没找到返回-1

// // 查找arr[0]元素,从下标1开始=>有返回位置索引1;
// // 查找arr[1]元素,从下标2开始=>没有返回-1;
// // 查找arr[2]元素,从下标3开始=>有返回位置索引3;
// // 查找arr[3]元素,从下标4开始=>有返回位置索引4;
// // 查找arr[4]元素,从下标5开始=>没有返回-1;
// // 查找arr[5]元素,从下标6开始=>有返回位置索引6;-1,8,9,-1,11,12,-1,-1

//    if(index !=-1){//有重复的进行截取
//     arr.splice(index,1)
//     i--//防止数组塌陷,i--在i++重新比对一遍
//    }
//   }
//   console.log(arr)

// // 数组去重第三种方法
// const arr = [1, 1, 2, 1, 2, 3, 3, 4, 4, 4, 5, 5, 5,6]
// const newarr = []

// for(let ele of arr){
// // console.log(ele)//1, 1, 2, 1, 2, 3, 3, 4, 4, 4, 5, 5, 5,6
// if(newarr.indexOf (ele)=== -1 ){
//   // 在newarr中查找1,找不到就添加到newarr中,-1
//   // 在newarr中查找1,能找到,返回索引0
//   // 在newarr中查找2,找不到就添加到newarr中,-1
//   // 在newarr中查找1,能找到,返回索引0
//   // 在newarr中查找2,能找到,返回索引1
//   // 在newarr中查找3,找不到就添加到newarr中,-1
//   newarr.push(ele)
// }
// }
// // console.log(newarr)