es6 set

Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。
```javascript
let mySet = new Set();
```
## Set 的特性

 - Set是唯一值的集合类似于数组,常用于数组出重

## Set 对象的几个常用方法和属性

> 1. `new Set() 创建新的Set对象。`
> 1. `add() 向 Set 添加新元素。`
> 1. `clear() 从 Set 中删除所有元素。`
>1. ` delete() 删除由其值指定的元素。`
>1. ` has() 如果值存在则返回 true。`
>1. ` forEach() 为每个元素调用回调。`
>1. ` keys() 返回 Set 对象中值的数组。`
>1. `size 返回元素个数。`

```javascript
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 也能存储
```
## 类型转换

```javascript
// Array 转 Set
var mySet = new Set(["value1", "value2", "value3"]);
// 用...操作符,将 Set 转 Array
var myArray = [...mySet];
String
// String 转 Set
var mySet = new Set('hello');  // Set(4) {"h", "e", "l", "o"}
// 注:Set 中 toString 方法是不能将 Set 转换成 String
```
## 数组去重

```javascript
var mySet = new Set([1, 2, 3, 4, 4]);
[...mySet]; // [1, 2, 3, 4]
```
## 并集

```javascript
var a = new Set([1, 2, 3]);
var b = new Set([4, 3, 2]);
var union = new Set([...a, ...b]); // {1, 2, 3, 4}
```

## 交集
`filter(function(item,index){}; 循环,(可以拿到下标)`
```javascript
var a = new Set([1, 2, 3]);
var b = new Set([4, 3, 2]);
var intersect = new Set([...a].filter(x => b.has(x))); // {2, 3}
//----------------------------
//     ES5写法
var intersect = new Set([...a].filter(function(x){
return b.has(x);
); // {2, 3}  
```
## 差集

```javascript
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}
//----------------------------
//     ES5写法
var intersect = new Set([...a].filter(function(x){
return !b.has(x);
); // {1}  
```
## forEach 循环

```javascript
 //Set 中用 forEach 获取不到下标,所以不用写index 这也是 forEach 和 for of 的区别
var a = new Set([11,22,33]);
a.forEach(function(item){
console.log(item);
}
//----------------------------
//     ES6 箭头函数写法
a.forEach(item => console.log(item));
```

## Map 与 Set 的区别

 1. set是以`[value, value]`的形式储存元素,而Map是以`[key, value]`的形式储存; set 没有`key`值。
 2. Map可以通过`get`方法获取值,而set不能因为它只有值。
 3. Set的值是唯一的可以做`数组去重`,Map由于没有格式限制,可以做`数据存储`。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值