JavaScript的默认对象表示方式{}可以视为其他语言中的Map或Dictionary的数据结构,即一组键值对。
但是JavaScript的对象有个小问题,就是键必须是字符串
一、Map
Map是一组键值对的结构,具有极快的查找
速度。
(1)Map实现,只需要一个“名字”-“年龄”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢。
var m = new Map([
['swh', 22],
['lby', 21]
])
var n = m.get('lby')
console.log(n) //输出21
(2)map常见方法
get() ----获取某个key或value
set() -----添加新的key-value(比如上面的名字-年龄)
delete() ----删除某个key或value
has() ----是否存在某个key或value
初始化Map需要一个二维数组
,或者直接初始化一个空Map
set方法如下:
var m = new Map();
m.set('lby', 21); // 添加新的key-value
m.set('swh', 22);
console.log(m);
输出:
delete方法如下:
var m = new Map();
m.set('lby', 21); // 添加新的key-value
m.set('swh', 22);
m.delete('lby')
console.log(m);
输出:
以此类推
由于一个key只能对应一个value
,所以,多次对一个key放入value,后面的值会把前面的值冲掉:
var m = new Map();
m.set('Adam', 67);
m.set('Adam', 88);
m.get('Adam'); // 88
二、Set
Set和Map类似,也是一组key的集合,但不存储value
。由于key不能重复,所以,在Set中,没有重复的key
。key直接放入set中
var m = new Set([1, 2, 3, 3, 4]);
console.log(m);
set()中有add()—添加 和delete()—删除 方法,一个一个添加删除
var m = new Set([1, 2, 3, 3, 4]);
m.add(5); //1,2,3,4,5
m.delete(2);
m.delete(5);
console.log(m); //1,3,4
重复元素在Set中自动被过滤
通过add(key)方法可以添加元素到Set中,可以重复添加,但不会有效果