ES6-set集合及方法

set 集合及方法

  • 它是一种数据结构
  • 类似于数组,但成员的值都是唯一的
  • 实现了迭代器接口,可以使用扩展运算符和for ...of遍历

属性和方法:

  • size:返回集合的元素个数
  • add:增加一个新元素,返回当前集合
  • delete:删除元素,返回一个boolean
  • has:检查集合中是否包含某元素,返回boolean

注意:

  • 上面说到其中值是唯一的,如果在 new 一个集合实例时,集合中有重复的值,它会自动去重
  • new一个集合对象时,需要传入一个数组,因此常用来将数组转化为集合
  • 使用扩展运算符和集合,灵活地对数组进行操作

声明一个 set

1
2
3
4
/*jshint esversion: 6 */
const s = new Set(["Crush", "dada", "lemon", "dada"]);
console.log(s); // Set(3) { 'Crush', 'dada', 'lemon' }
console.log(s.size); //3

集合实践

数组去重

1
2
3
const arr = [1, 3, 5, 2, 3, 8, 4, 3];
const res = [...new Set(arr)];
console.log(res); //[ 1, 3, 5, 2, 8, 4 ]

交集

1
2
3
4
5
6
7
8
9
10
11
12
const arr = [1, 3, 5, 2, 3, 8, 4, 3];
const arr2 = [2, 5, 3, 7];
let res = [...new Set(arr)].filter((item) => {
let arr2ToSet = new Set(arr2);
if (arr2ToSet.has(item)) return true;
else {
return false;
}
});
//或者
//let res = [...new Set(arr)].filter(item => new Set(arr2).has(item));
console.log(res); //[ 3, 5, 2 ]

并集

1
2
let union = [...new Set([...arr, ...arr2])];
console.log(union); //[ 1, 3, 5, 2,8, 4, 7]

差集

1
let sub = [...new Set(arr)].filter((item) => !new Set(arr2).has(item)); //注意,比交集加了一个感叹号,表示取反

Map

  • 它是一种数据结构
  • 类似于对象,是键值对的集合
    • 因此添加时,需要指定键和值两个参数
    • 但它的key,可以不是字符串,包括但不限于对象等
  • 它也实现了迭代器接口

属性和方法

  • size:返回Map的元素个数
  • set添加一个新元素,返回当前map
  • get:根据键名拿到(返回)键值
  • has:检查是否包含某元素,返回boolean
  • clear:清空集合,返回undefined
  • delete:根据根据键名删除键值对
1
2
3
let map = new Map();
map.set("张三", "法外狂徒");
console.log(map); //Map(1) { '张三' => '法外狂徒' }

ES6-rest参数和扩展运算符 ES6-变量解构赋值变量解构赋值

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×