Set
ES6提供了新的数据结构 --- Set. 它类似于数组,可以存储任意数据类型,但是成员的值都是唯一的,没有重复。Set本身是一个构造函数,用来生成Set数据结构。
const s = new Set() s.add(1) s.add('A String') s.add({name:'lee'}) s.add(true) s.add(1) console.log(s) // Set(4){1,'A string',{...},true}
上面的代码通过add方法向Set结构加入成员,结果表明Set结构不会添加重复的值。
《ES6标准入门》一书中写到Set函数可以接受一个数组(或者具有iterable接口的其他数据结构)作为参数,用来初始化。
// 例一 const set = new Set([1,2,3,4,4]) [...set] // [1,2,3,4] //例二 const items = new Set([1,2,3,4,5,5,5,5]) items.size //5 //例三 function divs(){ return [...document.querySelectorAll('div')] } const set = new Set(divs()) set.size
上面的代码中,例一和例二是Set函数接受数组作为参数,例三是接受类似数组的对象作为参数。上面的代码也展示了一种数组去重的方法。 // [...new Set(array)]
向Set加入值时不会发生类型转换,所有5和“5”是两个不同的值。另外,两个对象总是不相等的。
Set实例的属性和方法
Set结构的实例有以下属性。
· Set.prototype.constructor: 构造函数,默认就是Set函数
· Set.prototype.size: 返回Set实例的成员总数。
Set实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)。
操作方法:
1. add() // 添加某个值 2. delete() // 删除某个值,返回布尔值,表示删除是否成功 3. has() //返回一个布尔值,表示参数是否为Set的成员 4. clear() //清除所有成员,没有返回值
遍历方法:
1. keys() // 返回键名 2. values() // 返回键值 3. entries() // 返回键值对(同时包括键名和键值) 4. forEach() // 遍历每个成员