[null干貨]數(shù)組去重方法4種方法

/**
 *  數(shù)組去重方法:
 *  1、for循環(huán)遍歷方法
 *  2、filter+hashMap
 *  3、filter+indexOf方法
 *  4、for+sort方法
 */

/*
 * for循環(huán)
 * 遍歷數(shù)組,和新數(shù)組的每一項對比,有不同就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下標(biāo)
 */
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對數(shù)組進行排序,然后相鄰的對比,不同就push
 */
function unique4(arr) {
    arr.sort(); // 數(shù)組排序
    var newArr = [arr[0]];
    for(var i = 1, len = arr.length; i < len; i++) {
        // 相鄰的對比(即新數(shù)組的最后一個元素與當(dāng)前遍歷元素對比),不相等就加入新數(shù)組
        if(arr[i] !==  newArr[newArr.length-1]) newArr.push(arr[i]);
    }
    return newArr;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容