3.給數(shù)組添加一個(gè)去重的方法

1.雙層循環(huán)

            var unique = function(arr) {
              var res = []
              var len = arr.length
              for(var i = 0; i < len; i++) {
                for(var j = 0; j < res.length; j++) {
                  if(arr[i] === res[j]) {
                    break
                  }
                }
                //  循環(huán)結(jié)束再push進(jìn)去
                if(j === res.length) {
                  res.push(arr[i])
                }
              }
              log('unique', res)
              return res
            }

2.使用indexOf簡化內(nèi)層循環(huán)

var unique1 = function(arr) {
              var result = []
              var len = arr.length
              for(var i = 0; i < len; i++) {
                var a = arr[i]
                if(result.indexOf(a) == -1) {
                  result.push(a)
                }
              }
              log('unique1', result)
              return result
            }

3.排序后去重
// 先將舊數(shù)組排序,相同的就會排在一起,然后判斷當(dāng)前元素和下一個(gè)是否相同,不相同就push進(jìn)去

var unique2 = function(arr) {
              var res = []
              var sortedAarray = arr.concat().sort()
              var len = sortedAarray.length
              for(var i = 0; i < len; i++) {
                if(sortedAarray[i] !== sortedAarray[i+1]) {
                  res.push(sortedAarray[i])
                }
              }
              log('unique2', res)
              return res
            }

// 4.使用ES5的filter方法,也可以先排序再去判斷

var unique3 = function(arr) {
                var res = arr.filter(function(item, index, arr) {
                    return arr.indexOf(item) === index
                })
                log('unique3', res)
                return res
            }
            unique3(arr)

var unique3 = function(arr) {
                var res = arr.concat().sort().filter(function(item, index, arr) {
                    return item !== arr[index + 1]
                })
                log('unique3', res)
                return res
            }
            unique3(arr)

5.ES6 Set數(shù)據(jù)結(jié)構(gòu)

var unique4 = function(arr) {
                var res = [...new Set(arr)]
                //var res = Array.from(new Set(arr))
                log('unique4', res)
                return res
            }
            unique4(arr)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容