es6学习笔记7--Set

前端开发 作者: 2024-08-25 23:25:01
Set 基本用法 ES6提供了新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set本身是一个构造函数,用来生成Set数据结构。 上面代码通过add方法向Set结构加入成员,

基本用法

var s = new Set();

[2,3,5,4,2,2].map(x => s.add(x));

for (let i of s) {
  console.log(i);
}
// 2 3 5 4
 例一
var set = new Set([1,4]);
[...set]
 [1,4]

 例二
var items = ]);
items.size  5

 例三
function divs () {
  return [...document.querySelectorAll('div')];
}

 Set(divs());
set.size  56

 类似于
divs().forEach(div => set.add(div));
set.size  56
 去除数组的重复成员
[...new Set(array)]

Set实例的属性和方法

  • Set.prototype.constructor:构造函数,默认就是Set函数。
  • Set.prototype.size:返回Set实例的成员总数。
  • add(value):添加某个值,返回Set结构本身。
  • delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
  • has(value):返回一个布尔值,表示该值是否为Set的成员。
  • clear():清除所有成员,没有返回值。
s.add(1).add(2).add(2);
 注意2被加入了两次

s.size  2

s.has(1)  true
s.has(2)  true
s.has(3)  false

s.delete(2);
s.has(2)  false
]);
var array = Array.from(items);
 dedupe(array) {
  return Array.from( Set(array));
}

dedupe([1,1,3]) 遍历操作

  • keys():返回一个键名的遍历器
  • values():返回一个键值的遍历器
  • entries():返回一个键值对的遍历器
  • forEach():使用回调函数遍历每个成员
let set = new Set(['red','green','blue']);

 (let item of set.keys()) {
  console.log(item);
}
 red
// green blue

 (let item of set.values()) {
  console.log(item);
}
 (let item of set.entries()) {
  console.log(item);
}
 ["red","red"] ["green","green"] ["blue","blue"]
Set.prototype[Symbol.iterator] === Set.prototype.values
 true
var ws =  WeakSet();
ws.add(1)
 TypeError: Invalid value used in weak set
ws.add(Symbol())
 TypeError: invalid value used in weak set
new WeakSet();
  • WeakSet.prototype.add(value):向WeakSet实例添加一个新成员。
  • WeakSet.prototype.delete(value):清除WeakSet实例的指定成员。
  • WeakSet.prototype.has(value):返回一个布尔值,表示某个值是否在WeakSet实例之中。
 WeakSet();
var obj = {};
var foo = {};

ws.add(window);
ws.add(obj);

ws.has(window);  true
ws.has(foo);    
ws.delete(window);
ws.has(window);     false
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_68656.html
es6学习笔记7--Set