个人理解new Set,集合介于es5普通数组与哈希数组之间。既可以取数组的长度又可以有hash的对应关系保持唯一性。
1.利用唯一性快速去重
let a = [1,1,2,2,3,3,4,4];
console.log([...new Set(a)]) //[1,2,3,4];
console.log(a) // [1,1,2,2,3,3,4,4];
组数与集合之间相互转化的过程并不会操作原数组
2.快速查询是否包含某个值
new Set([1,2,3,4]).has(1)//true;
这个方法跟数组的includes()几乎没什么区别。
3.利用唯一性,add如同数组includes跟push的两步操作
let list = new Set([1,2,3]);
list.add(4);
console.log(list)//[1,2,3,4];
list.add(4);
console.log(list)//[1,2,3,4];
4.利用has,delete与add方法操作new Set可以获得并集与交集
并集
let list1 = [1,2,3];
let list2 = [3,4,5];
let newList= new Set(list1);
for(let elem of list2){
newList.add(elem);
}
console.log(newList)//[1,2,3,4,5]
交集
let list1 = [1,2,3];
let list2 = [3,4,5];
let newList= new Set();
for(let elem of list1){
if(new Set(list2) .has(elem)){
newList.add(elem);
}
}
console.log(newList)//[3]
网友评论