ES6语法 学习笔记(十)Set和Map

本文是关于ES6中Set和Map数据结构的学习笔记。Set不允许重复值,提供add、delete、has和size等方法,可用于数组去重。WeakSet则主要存放对象。Map以任意类型为键,提供了set、get、delete和has等操作,可方便遍历,而WeakMap的键仅限于对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Set

  • set数据结构类似于数组,但是里面不能有重复的值
  • 注意:Set({a:1})这样使用是错误的,括号里面不能直接放对象,但可以通过add()方法进行添加
  • 用法:
let a = new Set(['a','b']);
console.log(a);//{"a", "b"}

set数据结构的几种方法

  • add() – 添加一项
    该方法可以链式调用
let a = new Set(['a','b']);
a.add(1);
//a.add(1,2);//这样写也只会添加1进去
console.log(a);//{"a", "b", 1}
  • delete() – 删除一项
let a = new Set(['a','b']);
a.delete('a');
console.log(a);//{'b'}
  • has() – 判断里面有没有某个值
let a = new Set(['a','b']);
a.has('a');//true
  • size – 个数
let a = new Set(['a','b']);
console.log(a.size);//2
  • clear() – 清空
let a = new Set(['a','b']);
a.clear();
console.log(a);//{}

set数据结构的遍历

Set数据结构的key值和value值是一样的,遍历的时候默认遍历的是value

let setArr = new Set(['a','b','c','d']);

for(let item of setArr.keys()){
    console.log(item);
}
console.log('---------------------------');

for(let item of setArr.values()){
    console.log(item);
}
console.log('---------------------------');

for(let item of setArr.entries()){
    console.log(item);
}

console.log('---------------------------');

for(let [k,v] of setArr.entries()){
    console.log(k,v);
}

最好直接使用forEach进行遍历

let setArr = new Set(['a','b','c','d']);

setArr.forEach((value,index) =>{
    console.log(value, index);
});

set的一些用处

  • 可以通过扩展运算符…来实现数组去重
let arr = [1,2,3,4,5,6,7,6,5,4,3,2,1,2,3,4,4];

let newArr = [...new Set(arr)];

console.log(newArr);//[1, 2, 3, 4, 5, 6, 7]
  • 通过…转化为数组后使用数组map方法
let set = new Set([1,2,3]);
        
set = new Set([...set].map(val=>val*2));

console.log(set);//{2, 4, 6}

WeakSet()

WeakSet()与Set基本一样,WeakSet()里面一般用来放对象
WeakSet()没有size,也没有clear()

Map

Map类似与json,但map的健(key)可以是任意类型

  • 用法:
let map = new Map();

Map的一些方法

与set一样有delete、has、clear三种方法,用法也是一样。Map还有set,get方法

  • set&get
let map = new Map();
        
let json = {
    a:1,
    b:2
};

map.set('a','aaa'); //正常

map.set(json, 'aaa');

map.set('aaa', json);

console.log(map.get(json));
console.log(map.get('aaa'));

在这里插入图片描述

  • 对map进行遍历
let map = new Map();
        
let json = {
    a:1,
    b:2
};

map.set('a','aaa'); //正常
map.set(json, 'aaa');
map.set('aaa', json);

//循环
for(let [key,value] of map){
    console.log(key,value);
}

在这里插入图片描述

WeakMap()

WeakMap()的key只能是对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

boboj1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值