1.Map基本使用
let m = new Map();
m.set('c', 'content')
m.get('c')//content
m.size//1
m.has('c') // true
m.delete('c')
m.has('c')
m.clear()
2.Map结构和数组结构之间的转换
let map = new Map([
[1, 'one'],
[2, 'two'],
[3, 'three'],
]);
[...map.keys()]// [1, 2, 3]
[...map.values()]// ['one', 'two', 'three']
[...map.entries()]// [[1,'one'], [2, 'two'], [3, 'three']]
[...map]// [[1,'one'], [2, 'two'], [3, 'three']]
3.Map 循环遍历
Map 原生提供三个遍历器:
- keys():返回键名的遍历器。
- values():返回键值的遍历器。
entries():返回所有成员的遍历器。
let map = new Map([ ['F', 'no'], ['T', 'yes'], ]); for (let key of map.keys()) { console.log(key); } // "F" // "T" for (let value of map.values()) { console.log(value); } // "no" // "yes" for (let item of map.entries()) { console.log(item[0], item[1]); } // "F" "no" // "T" "yes" // 或者 for (let [key, value] of map.entries()) { console.log(key, value); } // 等同于使用map.entries() for (let [key, value] of map) { console.log(key, value); } 上面代码最后的那个例子,表示 Map 结构的默认遍历器接口(Symbol.iterator 属性),就是 entries 方法。 map[Symbol.iterator] === map.entries // true
4.js Map和java 的map不一样,内部是按顺序存储
const m = new Map(); m.set('key1', 'A'); m.set('key2', 'B'); m.set('keyn', 'N'); //获取第一个(这种方法只能获取第一个) console.log(m.keys().next().value); // 'key1' console.log(m.values().next().value); // 'A' console.log(m.entries().next().value); // [ 'key1', 'A' ] //获取任意一个没有直接方法,只能通过转换思路获取(这种方法可以获取任意一个) // The key at index 2 let key = Array.from(m.keys())[2];// 'keyn' // The value of the item at index 2 let val1 = m.get(key); // 'N' //获取最后一个的一种方法 Array.from(map.values()).pop();
5.如何判断Set和Map等类型
function getType(obj) { var type = Object.prototype.toString.call(obj).match(/^\[object (.*)\]$/)[1].toLowerCase(); if(type === 'string' && typeof obj === 'object') return 'object'; // Let "new String('')" return 'object' if (obj === null) return 'null'; // PhantomJS has type "DOMWindow" for null if (obj === undefined) return 'undefined'; // PhantomJS has type "DOMWindow" for undefined return type; } getType(new Map()) // "map"
6.Shallow-clone
let clonedMap = new Map(originalMap)
7.合并多个map
let merged = new Map([...map1, ...map2, ...map3])
8.普通object转换成map
const map = new Map(Object.entries({foo: 'bar'})); map.get('foo'); // 'bar'
9.删除前n个值
方法一:
aa = new Map(Array.from(aa).slice(3));
方法二:
for (let i = 0; i < 3; i ++) { aa.delete(aa.keys().next()); }
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。