Set数据结构
*es6方法,Set本身是一个构造函数,它类似于数组,但是成员值都是唯一的。
const set = new Set([1,2,3,4,4]) console.log([...set] )// [1,2,3,4] console.log(Array.from(new Set([2,3,3,5,6]))); //[2,3,5,6]
单一数组的去重:
let set = new Set([1,2,2,2,3]);
console.log(set);//Set(3) {1,2,3}
console.log([...set]);//[1,2,3]
多数组的合并去重:
let arr1 = [1,2,3,4]
let arr2 = [2,3,4,5]
let set = new Set([...arr1, ...arr2]);
console.log(set);//Set(5) {1,2,3,4,5}
console.log([...set]);//[1,2,3,4,5]
console.log(Array.from(set))////[1,2,3,4,5]
操作:
1、向Set中添加元素:
let set1=new Set();
set1.add(1);
set1.add(2);
console.log(set1);//Set(2) {1,2}
2、从set中删除元素;
var set1 = new Set();
set1.add(1);
set1.add(2);
set1.delete(1);
console.log(set1);//Set(1) {2}
3、判断某元素是否存在;
let set = new Set();
set.add(1);
set.add(2);
set.delete(1);
console.log(set.has(1)); //false
console.log(set.has(2)); //true
4、清除所有元素;
let set = new Set();
set.add(1);
set.clear();
console.log(set); //Set(0) {}
Set和Array互转
1、数组转Set
let set1 = new Set([1,2,3]);
console.log(set1);//Set(3) {1, 2, 3}
let set2 = new Set(new Array(1,2,3));
console.log(set2)//Set(3) {1, 2, 3}
2、Set转数组
var set = new Set([1,2,3]);
console.log([...set]); //[1,2,3]
console.log(Array.from(set)); //[1,2,3]
遍历
可以使用set实例对象的keys()、values()、entries()方法进行遍历;
由于Set的键名和键值是同一个值,它的每一个元素的key和value是相同的,所有的keys()和values()返回的值都是相同的,entrise()返回元素中的key和value是相同的。
let set1 = new Set([1,2,‘hello‘])
for(let item of set1.keys()){
console.log(item); //1,2,‘hello‘
}
for(let item of set1.values()){
console.log(item); //1,2,‘hello‘
}
for(let item of set1.entries()){
console.log(item); //[1,1][2,2][‘hello‘,‘hello‘]
}
其他特性:
在向Set加入值时,Set不会转换数据类型,内部在判断元素是否存在时用的类似与精确等于(===)的方法,“2”和2是不同的,NaN等于自身;
var set = new Set()
set.add(NaN);
set.add(NaN);
console.log(set); //Set(1) {NaN}
原文:https://www.cnblogs.com/huanghuamei206023/p/12386859.html