1.Set集合中的元素具有唯一性
let set1 = new Set();
console.log(set1)
let set2 = new Set([1, 2, 2, 3, 5, 8, 8, 9])
console.log(set2)
setArr = [...set2]
console.log(setArr)
2.以下使用Set的特性所以数组进行去重、交集、并集、差集操作
// 1数组去重
// Set对象即是一个集合,集合的特性不能存在重复的对象
// 使用数值扩展符是为了将Set转换为数组类型
const arr1 = [1, 4, 8, 9, 6, 6, 8, 9, 2, 7, 12]
const arr1Set = [...new Set(arr1)]
console.log(arr1Set)
//2.求两个数组的交集
const arr2 = [1, 4, 9, 7, 66, 33, 88]
const arr2Set = [...new Set(arr2)]
//filter函数,根据返回值true或者false来决定是否返回arr2Set中的元素
const result = arr2Set.filter((item) => {
newarr1 = new Set(arr1)//[1, 4, 8, 9, 6, 2, 7, 12]
if (newarr1.has(item)) {//集合具有has函数,即判断某元素是否再集合中
return true
} else {
return false;
}
})
console.log(result)
//求较级简化
const result1 = arr2Set.filter(item => new Set(arr1).has(item))
console.log(result1)
//求两个数组的并集
const arr3 = [...arr1Set, ...arr2Set]
const arr3Set = [...new Set(arr3)]
// console.log(arr1Set, arr2Set)
console.log(arr3Set)
const arr4 = [...new Set([...arr1, ...arr2])]
console.log(arr4)
//求两个集合的差集(集合A-集合B)------即跟交集相反
const result2 = arr2Set.filter(item => !new Set(arr1).has(item))
console.log(result2)