美文网首页
js数组去重的几种方法

js数组去重的几种方法

作者: txwslyf | 来源:发表于2017-08-19 18:37 被阅读0次

    思路一:

    1. 构建一个新的数组存放结果
    2. for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比
    3. 若结果数组中没有该元素,则存到结果数组中
        function unique1(arr) {
            var out = [],
                i = 0;
            for (i; i < arr.length; i++) {
                if (out.indexOf(arr[i]) === -1) {
                    out.push(arr[i])
                }
            }
            return out
        }
    

    思路二:

    1. 先将原数组进行排序
    2. 检查原数组中的第i个元素 与 结果数组中的最后一个元素是否相同,因为已经排序,所以重复元素会在相邻位置
    3. 如果不相同,则将该元素存入结果数组中
        function unique2(arr) {
            var out = arr.sort(function (a, b) {
                    return b - a
                }),
                i = 0,
                res = [];
            for (i; i < arr.length; i++) {
                if (arr[i] !== res[res.length - 1]) {
                    res.push(arr[i])
                }
            }
            return res
        }
    

    思路三:

    1. 创建一个新的数组存放结果
    2. 创建一个空对象
    3. for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入到第2步建立的对象中。
      说明:至于如何对比,就是每次从原数组中取出一个元素,然后到对象中去访问这个属性,如果能访问到值,则说明重复。
        function unique3(arr) {
            var out = [],
                ob = {},
                i = 0;
            for (i; i < arr.length; i++) {
                if (!ob[arr[i]]) {
                    out.push(arr[i]);
                    ob[arr[i]] = true
                }
            }
            return out;
        }
    

    相关文章

      网友评论

          本文标题:js数组去重的几种方法

          本文链接:https://www.haomeiwen.com/subject/klmurxtx.html