ES6新特性:Set和Map

Posted 流楚丶格念

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6新特性:Set和Map相关的知识,希望对你有一定的参考价值。

文章目录

说明

ES6提供了Set和Map的数据结构。

Set

Set,本质与数组类似。不同在于Set中只能保存不同元素,如果元素相同会被忽略。和java中的 Set集合非常相似。\\

Set声明

Set构造函数可以接收一个数组或空


let set = new Set();
set.add(1); // [1]
set.add(2);
set.add(3);
set.forEach(value => 
	console.log(value); //输出: 1 2 3
)

也可以接收数组

let set2 = new Set([2, 3, 4, 5, 5]); // 得到[2,3,4,5]
set2.forEach(value => 
	console.log(value); //输出: 2 3 4 5
)

Set常用方法

set.add(1); 	// 添加
set.delete(2); 	// 删除指定元素
set.has(2); 	// 判断是否存在
set.forEach(function() ) 	//遍历元素
set.size; 		// 元素个数。是属性,不是方法。
set.clear(); 	// 清空

Map

Map,本质是与Object类似的结构。不同在于,Object强制规定key只能是字符串。而Map结构的key可以是任意对象

即: object是 < string,object>集合map是< object,object>集合

Map声明

map可以接收一个数组,数组中的元素是键值对数组

const map = new Map([
	['key1', 'value1'],
	['key2', 'value2'],
])

或者接收一个set

const set = new Set([
	['key1', 'value1'],
	['key2', 'value2'],
])
const map2 = new Map(set)

或者其它map

const map3 = new Map(map);

Map常用方法

map.set(key, value); 	// 添加
map.clear(); 			// 清空
map.delete(key); 		// 删除指定元素
map.has(key); 			// 判断是否存在
map.forEach(function(key, value) ) 	// 遍历元素
map.size; 				// 元素个数。是属性,不是方法
map.values() 			// 获取value的迭代器
map.keys() 				// 获取key的迭代器
map.entries()			// 获取entry的迭代器

Map遍历

//用法:
for (let key of map.keys()) 
	console.log(key);

//或:
console.log(...map.values()); // 通过扩展运算符进行展开

代码案例

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>ES6新特性学习-(11)-set和map</title>
	</head>
	<body>

		<h2>ES6提供了Set和Map的数据结构。
			Set,本质与数组类似。不同在于Set中只能保存不同元素,如果元素相同会被忽略。和java中的 Set集合非常相似。
		</h2>
		<h2>map,本质是与Object类似的结构。不同在于, Object强制规定key只能是字符串。而Map结构 的key可以是任意对
			象。即: object是 < string,object>集合map是< object,object>集合
		</h2>
		<script>
			// Set构造函数可以接收一个数组或空
			let set = new Set();
			set.add(1); // [1]
			set.add(2);
			set.add(3);
			set.forEach(value => 
				console.log(value); //输出: 1 2 3
			)
			// 接收数组
			let set2 = new Set([2, 3, 4, 5, 5]); // 得到[2,3,4,5]
			set2.forEach(value => 
				console.log(value); //输出: 2 3 4 5
			)
			//常用方法
			set.add(1); // 添加
			set.delete(2); // 删除指定元素
			set.has(2); // 判断是否存在
			set.forEach(function() ) //遍历元素
			set.size; // 元素个数。是属性,不是方法。
			set.clear(); // 清空


			// map接收一个数组,数组中的元素是键值对数组
			const map = new Map([
				['key1', 'value1'],
				['key2', 'value2'],
			])
			// 或者接收一个set
			const set = new Set([
				['key1', 'value1'],
				['key2', 'value2'],
			])
			const map2 = new Map(set)
			// 或者其它map
			const map3 = new Map(map);

			//map常用方法
			map.set(key, value); // 添加
			map.clear(); // 清空
			map.delete(key); // 删除指定元素
			map.has(key); // 判断是否存在
			map.forEach(function(key, value) ) //遍历元素
			map.size; // 元素个数。是属性,不是方法
			map.values() //获取value的迭代器
			map.keys() //获取key的迭代器
			map.entries() //获取entry的迭代器
			//用法:
			for (let key of map.keys()) 
				console.log(key);
			
			//或:
			console.log(...map.values()); //通过扩展运算符进行展开
		</script>
	</body>
</html>

以上是关于ES6新特性:Set和Map的主要内容,如果未能解决你的问题,请参考以下文章

ES6新特性总结Set集合Map集合

ES6的新特性(12)——Set 和 Map 数据结构

最全的—— ES6有哪些新特性?

ES6新特性

ES6的新特性(14)——Iterator 和 for...of 循环

es6数组新特性