数组去重的几种方法

140 阅读1分钟
  1. set 方法去重

     let arr = [1, 5, 3, 3, 5]
     console.log([...new Set(arr)])  //  [1, 5, 3]
     console.log(Array.from(new Set(arr))); // [1, 5, 3]
     
    
  2. 双重for循环+ splice()

         let arr = [1, 5, 3, 3, 5]
         for (let i = 0; i < arr.length; i++) {
             for (let j = i + 1; j < i + arr.length; j++) {
                 if (arr[i] === arr[j]) {
                     arr.splice(j, 1)
                     j--
                 }
             }
    
         }
     console.log(arr);  // [1, 5, 3]
    
  3. 双重for循环 + 开关思想

      let arr = [1, 5, 3, 3, 5]
       let newArr = []
       for (let i = 0; i < arr.length; i++) {
           let falg = true
           for (let j = 0; j < newArr.length; j++) {
               if (arr[i] === newArr[j]) {
                   falg = false
                   break
               }
           };
           if (falg) {
               newArr.push(arr[i])
           }
       };
       console.log(newArr);  //   [1, 5, 3]
    
  4. 利用filter() + indexOf()

      let arr = [1, 5, 3, 3, 5]
      const res = arr.filter((item, index) => {
          return arr.indexOf(item) == index
      })
      console.log(res);  // [1, 5, 3]
    
  5. 利用for循环 + indexOf()

          let arr = [1, 5, 3, 3, 5]
          let newArr = []
          for (let i = 0; i < arr.length; i++) {
              if (newArr.indexOf(arr[i]) === -1) {
                  newArr.push(arr[i])
              }
          };
          console.log(newArr); // [1, 5, 3]
          
    
  6. 利用 map 数据结构去重

          let arr = [1, 2, 3, 4, 3, 2, 3, 4, 6, 7, 6]
          let unique = (arr) => {
              let seen = new Map()
              return arr.filter((item) => {
                  return !seen.has(item) && seen.set(item, 1)
              })
          }
          console.log(unique(arr)); // [1, 2, 3, 4, 6, 7]