3.给数组添加一个去重的方法

2017-10-24  本文已影响0人  jqClub

1.双层循环

            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
                  }
                }
                //  循环结束再push进去
                if(j === res.length) {
                  res.push(arr[i])
                }
              }
              log('unique', res)
              return res
            }

2.使用indexOf简化内层循环

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.排序后去重
// 先将旧数组排序,相同的就会排在一起,然后判断当前元素和下一个是否相同,不相同就push进去

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数据结构

var unique4 = function(arr) {
                var res = [...new Set(arr)]
                //var res = Array.from(new Set(arr))
                log('unique4', res)
                return res
            }
            unique4(arr)
上一篇 下一篇

猜你喜欢

热点阅读