JS中的Map()和set()

142 阅读1分钟

Map()

Map是一组键值对的结构,具有极快的查找速度
举个例子,假设要根据同学的名字查找对应的成绩,如果用array实现,需要两个array
给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,Array越长,耗时越长

var names = ['JN','JZ','MZ'];
var scores = [96,78,80];

如果用Map实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢

var n = new Map([
    ['JN',99],
    ['JZ',93]
]);
console.log(n.get('JN'));
//初始化一个Map
var m = new Map();
//set()添加
m.set('Ada',80);
m.set('小k',90);
//has()检查是否存在key'Ada'如果存在返回fase
console.log(m.has('Ada'));//true
//get()获取key值
console.log(m.get('Ada'));80
//delete删除'Ada'
m.delete('Ada');
console.log(m.get('Ada'));//undefined

Set()

Set和Map类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key

//重复元素在Set中自动被过滤:
let s = new Set([3,3,'3']);
//注意数字3和字符串'3'是不同的元素
console.log(s);//3,'3'
//添加数组
s.add(4);
console.log(s);//3,'3',4