数组去重的几种方式

第一种:双循环遍历是否存在当前值

    var arr = [1,1,'1',2,2,'2','c','c','d']
    function returnArr () {
      var newArr = [arr[0]]
      arr.forEach((item,index) => {
        var flg = true
        newArr.forEach((item2,index2) => {
          if (item  === item2) {
            flg = false
          }
        })
        // 当在新数组中没有当前值时进行插入
        if (flg) {
          newArr.push(item)
        }
      })
      return newArr
    }
    console.log(returnArr())

输出结果:[1, "1", 2, "2", "c", "d"]

这种写法虽然能实现需求,但是相对来说写法比较臃肿

第二种: 拿到当前值去往后查找是否有相同的,如果有就去掉

    function deleteArray( arr ){
      for( var i = 0; i < arr.length; i++ ){
        for( var j = i+1; j < arr.length; j++ ){
          if( arr[i] === arr[j] ){
            arr.splice(j, 1);
            j--;
          }
        }
      }
      return arr;
    }
    console.log(deleteArray(arr))

输出结果:[1, "1", 2, "2", "c", "d"]

第三种:利用indexOf方法

    function uniq(){
      var arr2 = []
      for(var i = 0; i < arr.length; i++){
        if(arr2.indexOf(arr[i]) == -1){
          arr2.push(arr[i])
        }
      }
      return arr2
    }
    console.log(uniq())

输出结果:[1, "1", 2, "2", "c", "d"]

第四种: es6一行数组去重

Array.from(new Set(arr))

输出结果:[1, "1", 2, "2", "c", "d"]

posted @ 2019-12-23 15:30  乐得逍遥  阅读(286)  评论(0编辑  收藏  举报