Set数据结构
ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
//Set本身是一个构造函数,用来生成 Set 数据结构。
const s = new Set();
例一
const set = new Set([1, 2, 3, 4, 4]);
[...set]
// [1, 2, 3, 4]
Set.prototype.size
返回Set
实例的成员总数。
//返回Set实例的成员总数。
// 例二
const items = new Set([1, 2, 3, 4, 5, 5, 5, 5]);
items.size // 5
// 例三
const set = new Set(document.querySelectorAll('div'));
set.size // 56
Set.prototype.add(value)
添加某个值,返回 Set 结构本身。
//Set.prototype.add(value):添加某个值,返回 Set 结构本身。
const s = new Set();
s.add(1).add(2).add(2);
s.size // 2
Set.prototype.delete(value)
删除某个值,返回一个布尔值,表示删除是否成
const s= new Set([1,2]);//空集合
s.delete(1); //删除集合中的元素 1
Set.prototype.has(value)
返回一个布尔值,表示该值是否为Set
的成员。
const s= new Set([1,2,3]);
s.has(4);// false
Set.prototype.clear()
清除所有成员,没有返回值。
const s= new Set([1,2,3]);
s.clear(); //清空集合
Set.prototype.forEach()
// mySet.forEach(callback[, thisArg])
// 按照插入顺序,为 Set 对象中的每一个值调用一次 callBackFn。
// 如果提供了thisArg参数,回调中的 this 会是这个参数。
//callback三个参数 item index(即item本身) set
function logSetElements(item, index, set) {
console.log("s[" + item + "] = " + index);
}
new Set(["foo", "bar", undefined]).forEach(logSetElements)
// "s[foo] = foo"
// "s[bar] = bar"
// "s[undefined] = undefined"
//for of 遍历set , 它的默认遍历器生成函数就是它的values方法
let set = new Set(['red', 'green', 'blue']);
//默认使用
for (let x of set) {
console.log(x);
}
// red
// green
// blue
Set.prototype.keys(); Set.prototype.values(); Set.prototype.entries()
-
返回遍历器
let set = new Set(['red', 'green', 'blue']); //返回键名的遍历器 for (let item of set.keys()) { console.log(item); } // red // green // blue //返回键值的遍历器 for (let item of set.values()) { console.log(item); } // red // green // blue //返回键值对的遍历器 for (let item of set.entries()) { console.log(item); } // ["red", "red"] // ["green", "green"] // ["blue", "blue"]