js es6 介绍set,WeakSet
2021-01-30 21:13
标签:win for 直接 清空 lse 就是 es6 OLE val 介绍一下es6 的set 和 weakset ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set 本身是一个构造函数,用来生成 Set 数据结构。 Set 函数可以接受一个数组作为参数,用来初始化。 Set中重复的元素不会添加,可以用于去重 在 Set 内部,两个NaN是相等。 两个对象总是不相等的。 Set 实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员) 四个操作方法: Set 结构的实例默认可遍历,它的默认遍历器生成函数就是它的values方法。 这意味着,可以省略values方法,直接用for...of循环遍历 Set。 WeakSet 的成员只能是对象,而不能是其他类型的值。 WeakSet 可以接受一个数组或类似数组的对象作为参数。 注意,是a数组的成员成为 WeakSet 的成员,而不是a数组本身。这意味着,数组的成员只能是对象。 WeakSet 没有size属性,没有办法遍历它的成员。 js es6 介绍set,WeakSet 标签:win for 直接 清空 lse 就是 es6 OLE val 原文地址:https://www.cnblogs.com/aoximin/p/13193916.html前言
正文
set
{
let list = new Set();
list.add(5);
list.add(7);
console.log(list.size); //2
}
{
let arr = [1,2,3,4,5];
let list = new Set(arr);
console.log(list.size); //5
}
Set不会转换数据类型,数字就是数字,字符串就是字符串{
let arr=[1,2,3,1,‘2‘]
let list2=new Set(arr);
console.log(list2); //Set(4) {1, 2, 3, "2"}
}
let set = new Set();
let a = NaN;
let b = NaN;
set.add(a);
set.add(b);
set // Set {NaN}
let set = new Set();
set.add({});
set.size // 1
set.add({});
set.size // 2
Set 实例的属性和方法
add(value):添加某个值,返回 Set 结构本身。
delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
has(value):返回一个布尔值,表示该值是否为Set的成员。
clear():清除所有成员,没有返回值。{
let arr=[‘add‘,‘delete‘,‘clear‘,‘has‘];
let list=new Set(arr);
console.log(list.has(‘add‘)); //true
console.log(list.delete(‘add‘),list);
//true Set(3){"delete", "clear", "has"}
list.clear(); //清空
console.log(list); // Set(0){}
}
{
let arr=[‘add‘,‘delete‘,‘clear‘,‘has‘];
let list=new Set(arr);
for(let key of list.keys()){
console.log(key); // add delete clear has
}
for(let value of list.values()){
console.log(value); // add delete clear has
}
for(let [key,value] of list.entries()){
console.log(key,value);
// add add delete delete clear clear has has
}
list.forEach(function(item){console.log(item);})
// add delete clear has
}
{
let arr=[‘add‘,‘delete‘,‘clear‘,‘has‘];
let list=new Set(arr);
for(let key of list.keys()){
console.log(key); // add delete clear has
}
for(let value of list.values()){
console.log(value); // add delete clear has
}
for(let [key,value] of list.entries()){
console.log(key,value);
// add add delete delete clear clear has has
}
list.forEach(function(item){console.log(item);})
// add delete clear has
}
{
let set = new Set([‘red‘, ‘green‘, ‘blue‘]);
for (let x of set) {
console.log(x);
}
WeakSet
{
let weakList=new WeakSet();
let arg={};
weakList.add(arg);
console.log(weakList); //{{}}
}
const ws = new WeakSet();
ws.add(1)
// TypeError: Invalid value used in weak set
ws.add(Symbol())
// TypeError: invalid value used in weak set
{const a = [[1, 2], [3, 4]];
const ws = new WeakSet(a);
console.log(ws)}
//WeakSet {Array(2), Array(2)}
//__proto__:WeakSet
//[[Entries]]:Array(2)
//0:Array(2)
//value:(2) [3, 4]
//1:Array(2)
//value:(2) [1, 2]
//length:2
{
const b = [3, 4];
const ws = new WeakSet(b);
// Uncaught TypeError: Invalid value used in weak set(…)
}
WeakSet 结构有以下三个方法。
add(value):添加某个值,返回 WeakSet结构本身。
delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
has(value):返回一个布尔值,表示该值是否为WeakSet的成员。
const ws = new WeakSet();
const obj = {};
const foo = {};
ws.add(window);
ws.add(obj);
ws.has(window); // true
ws.has(foo); // false
ws.delete(window);
ws.has(window); // false
WeakSet 没有size属性,没有办法遍历它的成员。
ws.size // undefined
ws.forEach // undefined
文章标题:js es6 介绍set,WeakSet
文章链接:http://soscw.com/index.php/essay/49195.html