美文网首页
[null干货]数组去重方法4种方法

[null干货]数组去重方法4种方法

作者: babybus_hentai | 来源:发表于2016-07-31 12:41 被阅读114次
/**
 *  数组去重方法:
 *  1、for循环遍历方法
 *  2、filter+hashMap
 *  3、filter+indexOf方法
 *  4、for+sort方法
 */

/*
 * for循环
 * 遍历数组,和新数组的每一项对比,有不同就push
 */
function unique1(arr) {
    var newArr = [], isRepeated;
    for( var i = 0, iLen = arr.length; i < iLen; i++) {
        isRepeated = false;
        for(var j = 0, jLen = newArr.length; j < jLen; j++) {
            if(arr[i] == newArr[j]) {
                isRepeated = true;
                break;
            }
        }
        !isRepeated && newArr.push(arr[i]);
    }
    return newArr;
}



/*
 * filter+hashMap
 * hash下标
 */
function unique2(arr) {
    var hashMap = {};
    return [].filter.call(arr, function (item) {
            if(!hashMap[item]) {
            hashMap[item] = 1;
            return true
        }
    });
}

/*
 * filter + indexOf
 * indexOf 返回第一个匹配元素的索引值
 */
function unique3(arr) {
    return [].filter.call(arr, function (item, index) {
        return arr.indexOf(item) === index;
    });
}


/*
 * for + sort
 * 先sort对数组进行排序,然后相邻的对比,不同就push
 */
function unique4(arr) {
    arr.sort(); // 数组排序
    var newArr = [arr[0]];
    for(var i = 1, len = arr.length; i < len; i++) {
        // 相邻的对比(即新数组的最后一个元素与当前遍历元素对比),不相等就加入新数组
        if(arr[i] !==  newArr[newArr.length-1]) newArr.push(arr[i]);
    }
    return newArr;
}

相关文章

网友评论

      本文标题:[null干货]数组去重方法4种方法

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