【JavaScript】ES6 数据类型—Set、Map

文章目录

Set

set:类似于数组,但成员的值都是唯一的,没有重复。

基本用法

const s = new Set();
[2,3,5,4,2,2].forEach(x => s.add(x))

console.log(s);
//Set(4) { 2, 3, 5, 4 }
for(let i of s){
    console.log(i);
}
//2
//3
//5
//4

Set函数可以接受一个数组作为参数,用来初始化

const set = new Set([1,2,3,4,4]);
console.log(set);
/* Set(4) { 1, 2, 3, 4 } */

属性

  • Set.prototype.constructor:构造函数,默认就是Set函数
  • Set.prototype.size:返回Set实例的成员总数

方法

  • add(value):添加value值,返回Set结构本身
  • delete(value):删除value值,返回一个布尔值,表示删除是否成功
  • has(value):返回一个布尔值,表示参数是否为Set的成员
  • clear():清除所有成员,没有返回值

遍历操作

  • keys():返回键名的遍历器
  • values():返回键值的遍历器
  • entries():返回键值对的遍历器
  • forEach():使用回调函数变量每个成员
  • 扩展运算符… 内部使用for-of循环
let set = new Set(['red','blue','yellow']);
let arr = [...set]
console.log(arr);
//[ 'red', 'blue', 'yellow' ]

Map

  • Object(对象)提供了”字符串-值”的对应,Map结构提供了”值-值”的对应,是一种更完善的Hash结构实现
  • 任何具有Iterator接口且每个成员都是一个双元素数组的数据结构都可以作为Map构造函数的参数。Set和Map都可以用来生成新的Map
const arr = [['name','张三'],['title','Author']];
let map = new Map(arr);
console.log(map);
//Map(2) { 'name' => '张三', 'title' => 'Author' }

const set = new Set([['fo',1],['bar',2]]);
let map1 = new Map(set);
console.log(map1);
//Map(2) { 'fo' => 1, 'bar' => 2 }

属性

  • size:返回map中元素的个数

方法

  • set(key,value):设置key所对应的键值,然后返回整个Map结构。如果key已经有值,则键值会被更新,否则就新生成该键
  • get(key):读取key对应的键值,如果找不到key,则返回undefined
  • has(key):返回一个布尔值,表示某个键是否在Map数据结构中
  • delete(key):删除某个键,返回true,删除失败返回false
  • clear():清除所有成员,没有返回值
  • keys():返回键名的遍历器
  • values():返回键值的遍历器
  • entries():返回所有成员的遍历
  • forEach():遍历Map的所有成员
1、forEach遍历:
	map.forEach(function(value,key){
		console.log(value,key);
	});
 	函数中第一个参数是属性值,第二个参数是属性

2、for-of遍历:
遍历结果是数组:
	for(let item of map){
	
	}
	
遍历属性值:      
	for(let item of map.values()){
	
	}
	
遍历属性:
	for(let item of map.keys()){
	
	}


3、entries遍历:
	for(let item of map.entries()){
	
	}
	遍历结果同forEach
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

南栀~zmt

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

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

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

打赏作者

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

抵扣说明:

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

余额充值