Set
特点:
(1)去重,有添加add 删除delete 检测 has() 情况 clear 遍历 for (let item of set)
案例1:原始数据 去重、交集、并集、差集
// 去重
let arr = [1, 2, 3, 3, 3, 4, 4, 5, 6]
let unique = new Set(arr)
// 交集
let arr2 = [4, 5, 6, 5, 6]
let intersection = [...new Set(arr)].filter(item => {
if (new Set(arr2).has(item)) {
return true
} else {
return false
}
});
// 并集
let union = new Set([...arr, ...arr2])
// 差集
let diff = [...new Set(arr2)].filter(item => !new Set(arr).has(item))
案例2:对象数据的去重
let arr = [
{id: 1, name: '周瑜'},
{id: 3, name: '王昭君'},
{id: 2, name: '亚瑟'},
{id: 1, name: '小乔'},
{id: 2, name: '大桥'},
{id: 3, name: '韩信'}
];
let obj = {}
arr = arr.reduce((preVal,curVal) => {
obj[curVal.id] ? "" : obj[curVal.id] = preVal.push(curVal)
return preVal
},[])
console.log(arr)
Map
特点
(1)Map 对象存有键值对,其中的键可以是任何数据类型。
(2)Map 对象记得键的原始插入顺序。
(3)Map 对象具有表示映射大小的属性