ES6,新增数据结构Set的用法

137 阅读1分钟

特性

  • 似于数组,所有元素都是唯一的,没有重复。利用这一唯一特性进行数组的去重工作。

例子

let set0 = new Set([1, 2, 2, 3, 4, 3, 5])
console.log(set6) //Set(4){1, 2, 3, 4, 5}

Set提供了一些方法

  1. 向Set中添加元素 add()
  2. 向Set中删除元素delete()
  3. 是否包含某个元素has()
  4. 清除所有元素
<!--add用法-->
let set1 = new Set();
set1.add(1);
set1.add(2);
set1.add(3);
console.log(set1)  //Set(3){1, 2, 3}

<!--delete用法-->
let set2 = new Set();
set2.add(1);
set2.add(2);
set2.delete(2)
set2.add(3);
console.log(set2)  //Set(3){1, 3}

<!--has用法-->
let set3 = new Set()
set3.add(1)
set3.add(2)
set3.add(3)

console.log(set3.has(4))//false
console.log(set3.has(2))//true

<!--clear用法-->
let set4 = new Set()
set4.add(1)
set4.add(2)
set4.add(3)
set4.clear()
console.log(set4)//Set(0){}

Set与Array转换

<!--Array转Set-->
let set5 = new Set([4,5,6])
console.log(set5)//Set(3){4,5,6}

let set6 = new Set(new Array(7, 8, 9))
console.log(set6)//Set(3){7, 8, 9}

<!---Set转Array-->
let set7 = new Set([4,5,6])
console.log([...set7])//[4,5,6]
console.log(Array.from(set7))//[4,5,6]

遍历

可以使用Set实例对象的keys(),values(),entries()方法进行遍历。 由于Set的键名和键值是同一个值,它的每一个元素的key和value是相同的,所有keys()和values()的返回值是相同的,entries()返回的元素中的key和value是相同的。

let set8 = new Set([4, 5, 'hello'])
for(let item of set8.keys()){
    console.log(item)//key
}
for(let item of set8.values()){
    console.log(item)//value
}
for(let item of set8.entries()){
    console.log(item)// [key, value]
}