Set一种新的数据结构,在之前数据的集合分为数组(Array)和对象(Object),ES6出现新的Set数据结构,和Map,这里先介绍一下Set.
如何定义Set数据结构?
let s = new Set();
//追加内容
s.add(15)
s.add(13)
s.add(11)
s.add(10)
s.add(5)
s.add(5)
s.add(75)
s.add(55)
s.add(15)
console.log(s)
console.log(typeof s)
打印结果则是Set类型,而不是传统的Array,不过这个Set和Array相似度极高,只不过Set中不允许出现相同的元素!
Set数据结构的方法
add()向Set追加元素
delete 删除Set中存在的元素
has() 判断Set中存在某个元素不,存在返回true,否则返回false
clear() 清空Set对象中的元素
可以使用forEach遍历
let arr = ['a','b','c','d','f']
let s = new Set([...arr]);
console.log(s)
// 通过froEach遍历每一项
s.forEach((x)=>{
console.log(x)
})
可以使用Set特有的三种方法进行遍历(for...keys,for ...values,for...entries)
// 可以使用 enteries,keys,values
for (x of s.entries()) {
console.log(x)
}
for ....keys返回Set中的下标,
for ....values返回Set的键值,
for....enteries返回一每个数组每一项是一个包含键值对的数组
var arr = [1,23,4,5,8,2,3,1,5,9,2,5,4,1,4,5,8];
console.log(arr)
let s = new Set([...arr]);
console.log(s)
//此时arr数据实现了去重复,但是类型改变了,可以使用Array.from方法
var newarr = Array.from(s)
console.log(newarr)
提醒,Set不能改变数据类型,需要转数组还需要使用Array.from()方法