当前位置: 代码网 > it编程>编程语言>Javascript > ES6基础语法之Map和Set对象

ES6基础语法之Map和Set对象

2024年05月18日 Javascript 我要评论
一、map对象map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。map中的键值是有序的。let mymap = new map();mymap.set("23","乔丹");

一、map对象

map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。

map中的键值是有序的。

let mymap = new map();
mymap.set("23","乔丹");
mymap.set("33","皮蓬");
let name = mymap.get("33");
console.log(name);  //皮蓬
let has = mymap.has("24"); //查找是否含有此键
console.log(has); //false

map的迭代:

let mymap = new map();
mymap.set("23","乔丹");
mymap.set("33","皮蓬");
mymap.set("99","罗德曼");
//循环键
for (let key of mymap.keys()) {
  console.log(key);
}		
//循环值
for (let value of mymap.values()) {
  console.log(value);
}			
//循环键和值
for (let [key, value] of mymap) {
  console.log(key + " = " + value);
}
//或
for (let [key, value] of mymap.entries()) {
  console.log(key + " = " + value);
}
			
//使用foreach循环
mymap.foreach(function(value,key){
	console.log(key + "=" + value);
},mymap);

map 与 array的转换:

//二维数组转换成map对象
let arr = [[23,"乔丹"],[33,"皮蓬"],[99,"罗德曼"]];
let mymap = new map(arr);
for (let [key, value] of mymap) {
  console.log(key + " = " + value);
}
//map对象转换成二维数组
let outarr = array.from(mymap);
console.log(outarr);

map的克隆:

let mymap1 = new map([[23,"乔丹"],[33,"皮蓬"],[99,"罗德曼"]]);
let mymap2 = new map(mymap1);
for (let [key, value] of mymap2) {
   console.log(key + " = " + value);
}

map的合并(合并两个 map 对象时,如果有重复的键值,则后面的会覆盖前面的)

let mymap1 = new map([[23,"乔丹"],[33,"皮蓬"],[99,"罗德曼"]]);
let mymap2 = new map([[23,"詹姆斯"],[24,"科比"],[11,"姚明"]]);
let mymap = new map([...mymap1,...mymap2]); //合并之后詹姆斯会替换乔丹
for (let [key, value] of mymap) {
	console.log(key + " = " + value);
}

二、set对象

set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。

set 对象存储的值总是唯一的,所以需要判断两个值是否恒等。有几个特殊值需要特殊对待:

(1) +0 与 -0 在存储判断唯一性的时候是恒等的,所以不重复;

(2) undefined 与 undefined 是恒等的,所以不重复;

(3) nan 与 nan 是不恒等的,但是在 set 中只能存一个,不重复。

let myset = new set();
myset.add(1);
myset.add("hello");  //这里体现了类型的多样性
myset.add(2);
myset.add(1); //这里添加不了,这里体现了值的唯一性
console.log(myset); //{1,"hello",2}
console.log(myset.has(3)); //false, 是否含有3

以下代码体现了对象之间引用不同不恒等,即使值相同,set 也能存储

let myset = new set();
let o = {a: 1, b: 2}; 
myset.add(o);
myset.add({a: 1, b: 2});
console.log(myset);

set类型转换:

//array 转 set
let arr = ["乔丹","皮蓬","罗德曼"];
let myset = new set(arr);
console.log(myset);

//set转array(使用...)
let myset = new set();
myset.add("乔丹");
myset.add("皮蓬");
myset.add("罗德曼");
let arr = [...myset];
console.log(arr);

//字符串转set(注:set中tostring方法是不能将set转换成string)
let myset = new set("hello");
console.log(myset);  //h e l o (两个l只出现一次)

set对象的作用:

//数组去重复
let myset = new set([1,2,1,2,3,3,4,5,6,4,7]);
let arr = [...myset];
console.log(arr); //1,2,3,4,5,6,7

//数组求并集
let a = new set([1, 2, 3]);
let b = new set([4, 3, 2]);
let union = new set([...a, ...b]);
let arr = [...union];
console.log(arr); //1, 2, 3, 4

//数组求交集
let a = new set([1, 2, 3]);
let b = new set([4, 3, 2]);
let intersect = new set([...a].filter(p=>b.has(p)));
let arr = [...intersect];
console.log(arr); //2, 3

到此这篇关于es6基础语法之map和set对象的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com