数组去重

基本类型

方式一

function noRepeat(arr){
    var newArr = [];
    var arrLength = arr.length;
    for (var i = 0; i < arrLength; i++) {
        // 如果当前数组项在新数组中不存在,插入新数组
        if (newArr.indexOf(arr[i]) === -1) {
            newArr.push(arr[i]);
        }
    }
    return newArr;
}

方式二

let newNameArr = [...new Set(nameArr)]

引用类型(对象)

根据对象的某个属性去重

方式一

/**
 * @params arr 要去重的数组
 * @params pro 数组中对象的某个属性
 * @returns arr 去重后的数组
 */
function noRepeatObj (arr, pro) {
    var hash = {};
    arr = arr.reduce(function (item, next) {
        hash[next[pro]] ? '' : hash[next[pro]] = true && item.push(next);
        return item
    }, []);
    return arr;
}

方式二

/**
 * @params arr 要去重的数组
 * @params pro 数组中对象的某个属性
 * @returns res 去重后的数组
 */
function noRepeatObj (arr, pro) {
    var res = []
    for (var i = 0, arrLen = arr.length; i < arrLen; i++) {
        for (var j = 0, resLen = res.length; j < resLen; j++) {
            if (arr[i][pro] === res[j][pro]) {
                break
            }
        }
        if (j === resLen) {
            res.push(arr[i])
        }
    }
    return res
}

根据对象整体去重

方式一

/**
 * @desc 去除完全相同的对象
 * @params arr 要去重的数组
 * @returns res 去重后的数组
 */
function noRepeatObj (arr) {
    var newArr = Array.from(
        new Set(
            arr.map( v => JSON.stringify(v) )
        )
    ).map( v=>JSON.parse(v) )
    return newArr
}

网站导航

网站导航

你可能感兴趣的:(数组去重)