//声明一个set对象
let s = new Set();
let pizza = new Set(['one', 'two', 'three', 'four', 'five', 'six'])
//console.log(pizza)
//显示元素个数 size
console.log(pizza.size)//6
//添加新元素 add()
pizza.add('seven')
console.log(pizza)//Set(7)
//删除元素 delete()
pizza.delete('four')
console.log(pizza)//Set(6)
//检测元素 has()
console.log(pizza.has('one'))//true
//清空元素
// pizza.clear();
// console.log(pizza)//Set(0)
//集合实现了iterator接口 ,所以我们用for... of...
for(let v of pizza){
console.log(v)//仅输出键值
}
//new Set()去重复
let arr = [1, 2, 3, 5]
//1、数组去重复
let pizza = new Set(arr)
console.log(pizza)//1、2、3、5
//去重复变数组
let result1 = [...new Set(arr)]
console.log(result1)//1,2,3,4,5,6
//2、交集
let arr1 = [1, 2, 2, 1, 7, 9]
let result = [...new Set(arr)].filter(function (item) {
//此处的item不是对象数组了,只是单个的数据,所以has()可以检测
let s2 = new Set(arr1)
// console.log(item)//arr1
if (s2.has(item)) {
return true
} else {
return false
}
})
// console.log(result)
//简写
let result2 = [...new Set(arr)].filter(item => new Set(arr1).has(item))
console.log(result2)
// 自写判断是否有重复
for (let i = 0; i < arr.length; i++) {
for (let o = i + 1; o < arr.length; o++) {
if (arr[i] == arr[o]) {
console.log("数据" + arr[i] + "重复")
}
}
}
let arr3s = [1, 2, 3, 4, 5, 6, 4, 5]
let arr4s = [1, 2, 3, 4, 5, 6, 4, 5]
let opop = new Set(arr3s).has(arr4s)
// console.log(opop)//false
//3、并集 去重复,去完重复把对象用扩张运算符转换为数组
let nnion = [...new Set([...arr, ...arr1])]
// console.log(nnion)
//差集 :A里边的数据 没有在B里边
let diff = [...new Set(arr)].filter(item => !(new Set(arr1).has(item)))
// console.log(diff)//3,4,5,6
// let arr = [1, 2, 3, 4, 5, 6, 4, 5]
// arr1 = [1, 2, 2, 1, 7, 9]