数组去重

87 阅读1分钟

数组去重方法老生常谈,既然是常谈,我也来谈谈。 我比较常用的方法如下: 个人习惯常用2,3,4 1的话比较兼容

1.双层循环

var array = [1, 1, '1', '1'];

function outArr(array) {
    // res用来存储结果
    var res = [];
    for (var i = 0;i < array.length; i++) {
        for (var j = 0; j < res.length; j++ ) {
            if (array[i] === res[j]) {
                break;
            }
        }
        // 如果array[i]是唯一的,那么执行完循环,j等于res.length
        if (j === res.length) {
            res.push(array[i])
        }
    }
    return res;
}

console.log(outArr(array)); // [1, "1"]

2.indexOf

var array = [1, 1, '1'];

function outArr(array) {
    var res = [];
    for (var i = 0, len = array.length; i < len; i++) {
        var current = array[i];
        if (res.indexOf(current) === -1) {
            res.push(current)
        }
    }
    return res;
}

console.log(outArr(array));

3.filter

var array = [1, 2, 1, 1, '1'];

function outArr(array) {
    var res = array.filter(function(item, index, array){
        return array.indexOf(item) === index;
    })
    return res;
}

console.log(outArr(array));

4.最简单最新的ES6---set()

function outArr(array) {
    return [...new Set(array)];
}