js数组去重的简便方法

方法一:ES6中的Set()数据结构(对简单数组去重)

Set数据结构,它类似于数组,其成员的值都是唯一的

function unique10(arr) {
  //Set数据结构,它类似于数组,其成员的值都是唯一的
  return Array.from(new Set(arr)); // 利用Array.from将Set结构转换成数组
}
console.log(unique10([1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4]));
// 结果是[1, 2, 3, 5, 6, 7, 4]

方法二:ES6中的Map()数据结构(对对象数组去重)

根据一维对象数组某个属性去重且该属性的值为简单数据类型

let arr = [
    { name: 'a', num: 1},
    { name: 'b', num: 1},
    { name: 'c', num: 1},
    { name: 'd', num: 1},
    { name: 'a', num: 1},
    { name: 'a', num: 1},
    { name: 'a', num: 1}
]
// ES6根据一维对象数组某个属性去重且该属性的值为简单数据类型,比较实用的一种的方法,也基本没有什么性能影响
function unique(arr, key) {
    const map = new Map()
    return arr.filter((item) => 
        !map.has(item[key] + '') 
        && 
        map.set(item[key] + '', 1)
    )
}
console.log(unique(arr,'name'));
// 结果:
[
    { name: 'a', num: 1},
    { name: 'b', num: 1},
    { name: 'c', num: 1},
    { name: 'd', num: 1},
]

猜你喜欢

转载自blog.csdn.net/qq_38679823/article/details/129715102