学过Java的同学都听说过集合框架(Collection),那么在最新的ES6规范引入了新的数据类型Map和Set,其作用就等同于Java集合框架中的Map与Set。
1.Map
Map是一种键值对的结构,使用Map可以提高查找效率。 例如:
<script>
let map = new Map([['北京', "010"], ['上海', "021"], ['广州', "020"],['东京', "000"]]);
//普通forEach遍历
map.forEach(function(v,k){
console.log(k+"="+v);
})
//箭头函数遍历
map.forEach((v,k)=>{
console.log(k+"="+v);
})
console.log("----------value的替换-----------");
//value的替换
map.set("东京","null");
map.forEach((v,k)=>{
console.log(k+"="+v);
})
//添加新的键值对
console.log("----------添加新的键值对-----------");
map.set('西安', "029");
map.forEach((v,k)=>{
console.log(k+"="+v);
})
//判断某个键是否存在
console.log(map.has("上海"));
//删除某个键
map.delete("广州");
console.log("----------删除某个键-----------");
map.forEach((v,k)=>{
console.log(k+"="+v);
})
</script>
运行结果:

2.Set
Set和Map类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key。
例如:
<script>
let set = new Set(['orange','banana','apple']);
console.log("-----------遍历set----------");
set.forEach(function(k){
console.log(k);
})
set.add('grape');
set.add('apple'); //不会添加重复的key
console.log("-----------添加重复的key----------");
set.forEach(function(k){
console.log(k);
})
set.delete('banana')
console.log("-----------删除key----------");
set.forEach(function(k){
console.log(k);
})
</script>
运行结果:
