js 数组去重

74 阅读1分钟
  1. 第一种方式: 对象数组去重
// 封装方法:根据提供的属性去重
        function arrDistinctByProp(arr,prop){
            let obj = {};
            return arr.reduce(function(preValue,item){
                obj[item[prop]] ? '' : obj[item[prop]] = true && preValue.push(item);
                return preValue
            },[])
        }
        // 根据sourceMap去重
        let arr = 
            [
                {sourceMap: '金额', dataListMap: '房屋及建筑物'},
                {sourceMap: '金额', dataListMap: '机器设备'},
                {sourceMap: '金额', dataListMap: '其他设备'},
                {sourceMap: '金额', dataListMap: '运输设备'}
            ]
        let newArr = arrDistinctByProp(arr,'sourceMap')
        // 打印返回的新数组
        console.log(newArr)


  1. 第二种 字符串数组去重
function noRepeat(arr){
    var newArr = [...new Set(arr)]; //利用了Set结构不能接收重复数据的特点
    return newArr
}
let arr1 = [' asc', ' desc', ' asc', ' desc'];
let arr2 = this.noRepeat(arr1)
console.log('arr2---',arr2); 
 // [' asc', ' desc']
  1. 第三种 字符串数组去重2 (特殊格式)< 待写 >
    let arr1 = ['项目 asc', '房屋及建筑物 desc', '办公设备 desc', '办公设备 asc', '项目 desc', '房屋及建筑物 asc']