js数组去重的几种方法

2017-08-19  本文已影响0人  txwslyf

思路一:

  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;
    }
上一篇下一篇

猜你喜欢

热点阅读