- set, ES6提供的新的数据结构, 与数组类似, 但是成员的值都是唯一 的, 没有重复的值
基础用法
- constructor: 构造函数 默认就是 set 函数
- size: 返回set 实例的成员总数
- Set.prototype.add(value): 添加某个值, 返回 Set 结构本身
- Set.prototype.delete(value): 删除某个值, 返回一个布尔值, 表示删除是否成功
- Setprototype.has(value): 返回一个布尔值, 表示该值是否为 Set 成员
- Setprototype.clear(): 清除所有成员, 没有返回值
- keys(), 返回健名的遍历器
- values(), 返回键值的遍历器
- entries(), 返回键值对的遍历器
- 使用回调函数遍历每个成员
- 数组去重: var mySet = new Set ([ 1, 2, 3, 4, 5 ])? [ ...mySet ]?
- 并集:?
// 并集
var a = new Set([ 1, 2, 3 ])
var b = new Set([4, 3, 2])
var c = new Set([...a, ...b]) // {1, 2, 3, 4}
// 交集
var a = new Set([ 1, 2, 3 ])
var b = new Set([4, 3, 2])
var c = new Set([...a].filter(x => b.has(x))) // { 2, 3 }
// 差集
var a = new Set([1, 2, 3]);
var b = new Set([4, 3, 2]);
var difference = new Set([...a].filter(x => !b.has(x))); // {1}
let mySet = new Set ()
mySet.add(1); // Set(1) {1}
mySet.add(5); // Set(2) {1, 5}
mySet.add(5); // Set(2) {1, 5} 这里体现了值的唯一性
mySet.add("some text");
// Set(3) {1, 5, "some text"} 这里体现了类型的多样性
var o = {a: 1, b: 2};
mySet.add(o);
mySet.add({a: 1, b: 2});
// Set(5) {1, 5, "some text", {…}, {…}}
// 这里体现了对象之间引用不同不恒等,即使值相同,Set 也能存储
// set 函数 可以接收一个数组作为参数, 用来初始化
// 例一
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
- 数据类型转换
-
// array 与 set 类型转换
var mySet = new Set([ 'value1', 'value2', 'value3' ])
var myArray = [ ...mySet ]
// Array.from 可以将 set 结构转为数组
const items = new Set([ 1, 2, 3, 4, 5 ])
const array = Array.from(items)
// String 与 Set 类型转换
var mySet = new Set('hello') // 返回值: set(4){ 'h', 'e', 'l', 'o' }
// 注意 Set 中, toString 方法是不能将 Set 转换成 String
|