Set数据结构【ES6】
读万卷书,行万里路!
目录
- Set结构
- Set实例属性
- Set方法
- add方法
- has方法
- delete方法
- clear方法
- 遍历
- keys()
- values()
- entries()
- 与数组对比
- forEach()
- 对于复杂数据进行去重
- 自己写的方法
- new Set方法
Set结构
它类似于数组,但是成员的值都是唯一的,没有重复的值。【数组去重】
let s1 = new Set([1,2,2,3,4,3])console.log(s1) // Set(4) {1, 2, 3, 4}
console.log([...s1]); // (4) [1, 2, 3, 4]
console.log(Array.from(s1)); // (4) [1, 2, 3, 4]
Set实例属性
size属性
let s1 = new Set([1,2,2,3,4,3])
console.log(s1.size) // 4
Set方法
add方法
往set里面添加数据 add(value)
let s2 = new Set();
s2.add(1).add(2).add(3).add(2);
console.log(s2) // Set(3) {1, 2, 3}
has方法
检查Set中是否包含某个值. has(value)
let s2 = new Set([1,2,3,4,5])
console.log(s2.has(3)) // true
console.log(s2.has(8)) // false
delete方法
从set中删除一个值 delete(value)
let s2 = new Set([1,2,3,4,5])
s2.delete(3)
console.log(s2.has(3)) // false
console.log(s2) // Set(4) {1, 2, 4, 5}
clear方法
清除Set中的所有值 clear()
let s2 = new Set([1,2,3,4,5])
s2.clear();
console.log(s2) // Set(0) {}
遍历
keys()
返回键名的遍历器
let s2 = new Set([1,2,3,4,5])for (let i of s2) {console.log(i) // 1 <br/> 2 <br/> 3 <br/> 4 <br/> 5
}for(let i of s2.keys()){console.log(i) // 1 <br/> 2 <br/> 3 <br/> 4 <br/> 5
}
values()
返回键值的遍历器
for(let i of s2.values()){console.log(i) // 1 <br/> 2 <br/> 3 <br/> 4 <br/> 5
}
entries()
返回键值对的遍历器
for(let i of s2.entries()){console.log(i) // (2) [1, 1] <br/> (2) [2, 2] <br/> (2) [3, 3] <br/> (2) [4, 4] <br/> (2) [5, 5]
}
与数组对比
let arr = ['aa','bb','cc']
for(let i of arr){console.log(i) // aa <br/> bb <br/> cc
}for(let i of arr.keys()){console.log(i) // 0 <br/> 1 <br/> 2
}for(let i of arr.values()){console.log(i) // aa <br/> bb <br/> cc
}for(let i of arr.entries()){console.log(i) // (2) [0, 'aa'] <br/> (2) [1, 'bb'] <br/> (2) [2, 'cc']
}
forEach()
s2.forEach((item,index)=>{console.log(item,index) // 1 1 <br/> 2 2<br/> 3 3<br/> 4 4<br/> 5 5
})
对于复杂数据进行去重
自己写的方法
function removeRepeat(arr){let res = new Set();return arr.filter((item)=>{let id = JSON.stringify(item);if(res.has(id)){return false;}else{res.add(id);return true;}})
}let a1 = [1,1,2,3,4,3,'a','b','c','a',{name:'ssy'},{age:18},{name:'ssy'}]console.log(removeRepeat(a1))
结果:
new Set方法
let a1 = [1,1,2,3,4,3,'a','b','c','a',{name:'ssy'},{age:18},{name:'ssy'}]console.log(new Set(a1))
结果: