es6Map和Set

Map

Map是一组键值对的结构,具有极快的查找速度。解决的JavaScript只能以字符串为键的问题

Map 结构的操作方法:

(1)set(key, value)   (2)get(key)    (3)has(key)   (4)delete(key)  (5)clear()

var map=new Map([["ziqi",98],["juxiang",87],["wuning",45]]);
	map.set("adm",23);
	var score1=map.get("juxiang");//87
	var score1=map.get("adm"); //23
	map.has("ziqi");           //true
	map.delete("ziqi");
	map.has("ziqi");           //false
	console.log(map);

map.size属性可以获取map数据的长度

如果对同一个键多次赋值,后面的值将覆盖前面的值。

const map = new Map();

map
.set(1, 'aaa')
.set(1, 'bbb');

map.get(1) // "bbb"

注意:只有对同一个对象的引用,Map 结构才将其视为同一个键。这一点要非常小心。

const map = new Map();

map.set(['a'], 555);
map.get(['a']) // undefined

Map 的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键。上面代码的setget方法,表面是针对同一个键,但实际上这是两个值,内存地址是不一样的,因此get方法无法读取该键,返回undefined,

所以说

如果 Map 的键是一个简单类型的值(数字、字符串、布尔值),则只要两个值严格相等,Map 将其视为一个键,比如0-0就是一个键,布尔值true和字符串true则是两个不同的键。另外,undefinednull也是两个不同的键。虽然NaN不严格相等于自身,但 Map 将其视为同一个键

let map=new Map();
 	map.set(-0,124);
 	map.get(+0)    //124

 	map.set(true, 1);
	map.set('true', 2);
	map.get(true)   //1
	map.get('true') //2

	map.set(undefined, 3);
	map.set(null, 4);
	map.get(undefined) // 3
	map.get(null) //4

	map.set(NaN, 123);
	map.get(NaN) // 123

map的遍历方法

Map 结构原生提供三个遍历器生成函数和一个遍历方法

  • keys():返回键名的遍历器。
  • values():返回键值的遍历器。
  • entries():返回所有成员的遍历器。
  • forEach():遍历 Map 的所有成员

set

SetMap类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key。数组去重简直很方便呐~~~~

要创建一个Set,需要提供一个Array作为输入,或者直接创建一个空Set

/ 例一
const set = new Set([1, 2, 3, 4, 4]);
[...set]
// [1, 2, 3, 4]

在 Set 内部,两个NaN是相等。两个对象总是不相等的

let set = new Set();

set.add({});
set.size // 1

set.add({});
set.size // 2

Set 实例的属性和方法

Set 结构的实例有以下属性。

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

Set 实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)。下面先介绍四个操作方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值