js中的Map
Map
对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。
创建
1.无参数
创建一个空的Map
集合
var mp=new Map();
2.数组参数
要求传入一个二维数组(每个元素是大小为2的数组)作为参数,每个元素的第一个元素为key
,第二个元素为value
let arr=[[1,2],[3,4]]; //arr[0][0],arr[1][0]为key, arr[0][1],arr[1][1]为value,
var mp=new Map(arr);
遍历
forEach(function(v[,k]))
以插入的先后顺序遍历每个键值对的value
let arr=[[1,2],[3,4]];
var mp=new Map(arr);
mp.forEach(function(v){
console.log(v);
})
/*
2
4
*/
以插入的先后顺序遍历每个键值对的(key,value)
let arr=[[1,2],[3,4]];
var mp=new Map(arr);
mp.forEach(function(v,k){
console.log(k,v);
})
/*
1 2
3 4
*/
特别注意:forEach(function(v[,k]))
的第一个参数为value,第二个参数为key
插入/修改
set(k,v)
- map中不存在key时,添加一个{k,v}的键值对
var mp=new Map();
mp.set(3,6);
mp.set(4,7);
mp.forEach(function(v,k){
console.log(k,v);
})
/*
3 6
4 7
*/
- map中存在key时,修改key为k的value值
var mp=new Map();
mp.set(3,6);
mp.set(4,7);
mp.set(4,8);
mp.forEach(function(v,k){
console.log(k,v);
})
/*
3 6
4 8
*/
删除
delete(k)
存在key为k的键值对,删除并返回teue,不存在返回false。
var mp=new Map();
mp.set(3,6);
mp.set(4,7);
mp.delete(4);
mp.forEach(function(v,k){
console.log(k,v);
})
/*
3 6
*/
判断
has(k)
返回一个bool值,判断map中是否存在key为k的键值对
var mp=new Map();
mp.set(3,6);
mp.set(4,7);
console.log(mp.has(6));
console.log(mp.has(4));
/*
false
true
*/
取值
get(k)
获取key为k的value值,如果不存在key为k的键值对,返回undefined
var mp=new Map();
mp.set(3,6);
mp.set(4,7);
console.log(mp.get(3));
console.log(mp.get(7));
/*
6
undefined
*/
size()
获取键值对的个数
var myMap = new Map();
myMap.set('a', 'alpha');
myMap.set('b', 'beta');
myMap.set('g', 'gamma');
myMap.size // 3
clear()
清空map集合所有键值对
keys()
返回一个新的 Iterator
对象。它包含按照顺序插入Map对象中每个元素的key值。
var myMap = new Map();
myMap.set('0', 'foo');
myMap.set(1, 'bar');
myMap.set({}, 'baz');
var mapIter = myMap.keys();
console.log(mapIter.next().value); // "0"
console.log(mapIter.next().value); // 1
console.log(mapIter.next().value); // Object
values()
方法返回一个新的Iterator对象。它包含按顺序插入Map对象中每个元素的value值。
var myMap = new Map();
myMap.set('0', 'foo');
myMap.set(1, 'bar');
myMap.set({}, 'baz');
var mapIter = myMap.values();
console.log(mapIter.next().value); // "foo"
console.log(mapIter.next().value); // "bar"
console.log(mapIter.next().value); // "baz"