ES6-Set

作者: 追马的时间种草 | 来源:发表于2019-10-23 11:39 被阅读0次

Set

Set的基本用法

set 类似于数组,且成员值不重复都是唯一的,set本身是一个构造函数。

const set=new Set();
[1,1,2,3,3,4,4,5,6,7].forEach(item=>set.add(item));
[...set] // [1, 2, 3, 4, 5, 6, 7]

上面代码通过add()方法向实例结构加入新的成员,结果表明不会添加重复的值

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

相同的方法也可以将String类型中的重复字符去掉

[...new Set('ababbc')].join('')
// "abc"

以上可以理解为在向SET中add成员时,不会进行类型转换,也就是时即将加入的成员会与已有成员进行===比较,但是在SetNaN等于自身

let set=new Set();
let a=NaN,b=NaN
set.add(a);
set.add(b);
set.add(5);
set.add('5');
set //{NaN, 5, "5"}
Set实例的属性
  • Set.prototype.constructor构造函数
  • Set.prototype.size返回set实例成员的长度
Set的操作方法
  • Set.prototype.add()添加值,放回Set结构本身
  • Set.prototype.delete()删除某个值。返回booler值
  • Set.prototype.has()返回booler值,用于检测该值是否为Set的成员
  • Set.prototype.clear()清楚所有成员,没有返回值
let sw=new Set();
sw.add(1).add(2).add(2);
sw.size//2
sw.has(2)//true
sw.delete(2);
sw.has(2)//false
sw.clear()
sw.size//0

Set的遍历方法

  • Set.prototype.keys():返回键名的遍历器
  • Set.prototype.values():返回键值的遍历器
  • Set.prototype.entries():返回键值对的遍历器
  • Set.prototype.forEach():使用回调函数遍历每个成员

由于 Set 结构没有键名,只有键值(或者说键名和键值是同一个值),所以keys方法和values方法的行为完全一致

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"]

Set实例和数组一样可以拥有forEach方法,且没有返回值

let cccc = new Set(['学习', '存储', ]);
cccc.forEach((value, key) => console.log(key + ' : ' + value))
//学习 : 学习
//存储 : 存储

同样... 数组的mapfilter方法也可以间接用于 Set

//并集
let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);
let union=new Set(..a,..b);
// Set {1, 2, 3, 4}

//交集
let intersect=new Set([...a].filter(item=>b.has(item)))
console.log(intersect)//Set(2) {2, 3}

//差集
let different=new Set([...a].filter(item=>!b.has(item)))
console.log(different)//Set(1) {1}  

let set = new Set([1, 2, 3]);
set = new Set([...set].map(x => x * 2));
// 返回Set结构:{2, 4, 6}


关于更多请查看Set 和 Map 数据结构

相关文章

  • es6-Set集合与Map集合

    title: es6-Set集合与Map集合date: 2018-02-08 21:55:41tags: es6 ...

  • ES6-Set

    Set Set的基本用法 set 类似于数组,且成员值不重复都是唯一的,set本身是一个构造函数。 上面代码通过a...

  • es6-set、map

    Set地址1、地址2 一种新的类似数组的数据结构,保证值唯一。 入参:具有 iterable 接口的数据,如数组:...

  • ES6-Set篇

    Set-ES6提供的一种新的数据结构 Set是一个构造函数,类似于Array; 但是 set 结构只能通过new ...

  • ES6-set & map

    一、Set Set ,就是一堆东西的集合,Set 有点像 Array-数组, 不过跟数组不一样的是,Set 里面不...

网友评论

      本文标题:ES6-Set

      本文链接:https://www.haomeiwen.com/subject/bdwfvctx.html