js实现数组去重怎么实现?

    1. IndexOf()
    2. 双重for循环
    3. es6的 […new Set()]
    4. filter()
    5. sort()
      面试随便写一两种就行、项目直接用new Set()(方便)

方法1. 创建一个新的临时数组来保存数组中已有的元素

 
  var oLis = new Array(1, 2, 2, 2, 2, 5, 3, 2, 9, 5, 6, 3),
         n = []
        for (var i = 0; i < oLis.length; i++) {
            if (n.indexOf(oLis[i]) == -1) {
                n.push(oLis[i])
            }
        }
console.log(n)//[1, 2, 5, 3, 9, 6]

方法2. 使用哈希表存储已有的元素

 
   var oLis = new Array(1, 2, 2, 2, 2, 5, 3, 2, 9, 5, 6, 3),
            hash = {},
            n = []; //hash 作为哈希表, n为临时数组
        for (var i = 0; i < oLis.length; i++) {
            if (!hash[oLis[i]]) { //如果hash表中没有当前项
                hash[oLis[i]] = true; //存入hash表
                n.push(oLis[i]); //当前元素push到临时数组中
            }

        }
        console.log(n) //[1, 2, 5, 3, 9, 6]

方法3. 先排序再去重

 var oLis = new Array(1, 2, 2, 2, 2, 5, 3, 2, 9, 5, 6, 3)
        oLis.sort(function(a, b) {return a - b;})
 var n = [oLis[0]];
        for (var i = 1; i < oLis.length; i++) {
            if (oLis[i] !== oLis[i - 1]) {
                n.push(oLis[i]);
            }

        }
console.log(n) //[1, 2, 5, 3, 9, 6]
 

 

posted @ 2022-08-10 16:45  奶包迷了鹿  阅读(23)  评论(0)    收藏  举报