数组去重的几种方式

293 阅读1分钟

1. 哈希表去重(hash会有缺陷)

var arr = [1, '1', null, 2, null, true, 3, true, '3', 2, 3, 2, 3]
   const only = target => {
            let results = []
            let hash = {}
            target.forEach(item => {
                if (!hash[item]) {
                    results.push(item)
                    hash[item] = true
                }
            })
            return results
          }
          const results = only(arr)
          console.log(results)

2.indexOf去重

var arr = [1, '1', null, 2, null, true, 3, true, '3', 2, 3, 2, 3]
 const only = target => {
            let results = []
            target.forEach(item => {
                 if(results.indexOf(item)===-1){
                    results.push(item)
                }
            })
             return results
          }
          const results = only(arr)
          console.log(results)

2.reduce+includes去重

var arr = [1, '1', null, 2, null, true, 3, true, '3', 2, 3, 2, 3]
 const only = target => {
           const results = target.reduce((cur,par)=>{
                 return cur.includes(par)?cur:cur.concat(par)
               },[])
           
             return results
          }
          const results = only(arr)
          console.log(results)