map对象常用方法
还有个概念迭代器:
https://blog.csdn.net/z591102/article/details/119669419
map对象
- 一个 Object 的键只能是字符串或者 Symbols,但一个 Map 的键可以是任意值。
- Map 中的键值是有序的(FIFO 原则先进先出原则),而添加到对象中的键则不是。
- Map 的键值对个数可以从 size 属性获取,而 Object 的键值对个数只能手动计算。
- Object 都有自己的原型,原型链上的键名有可能和你自己在对象上的设置的键名产生冲突。
1.key为字符串
2.key为对象
3.key为函数
4.key为NaN
常用方法
-
clear方法。清空map中的键值对
var myMap = new Map(); myMap.set('bar', 'baz'); myMap.set(1, 'foo'); myMap.size; // 2 myMap.has('bar'); // true myMap.clear(); myMap.size; // 0 myMap.has('bar') // false
-
delete方法。
var myMap = new Map(); myMap.set('bar', 'foo'); myMap.delete('bar'); // Returns true. Successfully removed. myMap.has('bar'); // Returns false. The "bar" element is no longer present.
3.entries方法。
**entries()**
方法返回一个新的包含[key, value]
对的**Iterator**
对象,返回的迭代器的迭代顺序与Map
对象的插入顺序相同。类似链表的感觉var myMap = new Map(); myMap.set("0", "foo"); myMap.set(1, "bar"); myMap.set({}, "baz"); var mapIter = myMap.entries(); console.log(mapIter.next().value); // ["0", "foo"] console.log(mapIter.next().value); // [1, "bar"] console.log(mapIter.next().value); // [Object, "baz"] console.log(mapIter.next().value); // undefined
4.forEach方法
// 箭头函数 forEach(() => { ... } ) forEach((value) => { ... } ) forEach((value, key) => { ... } ) forEach((value, key, map) => { ... } ) // 回调函数 forEach(callbackFn) forEach(callbackFn, thisArg) // 内联回调函数 forEach(function() { ... }) forEach(function(value) { ... }) forEach(function(value, key) { ... }) forEach(function(value, key, map) { ... }) forEach(function(value, key, map) { ... }, thisArg) //例子 function logMapElements(value, key, map) { console.log(`map.get('${key}') = ${value}`) } new Map([['foo', 3], ['bar', {}], ['baz', undefined]]).forEach(logMapElements) // logs: // "map.get('foo') = 3" // "map.get('bar') = [object Object]" // "map.get('baz') = undefined"
5.get方法返回某个 Map
对象中的一个指定元素。
let myMap = new Map();
myMap.set('bar', 'foo');
myMap.get('bar'); // Returns "foo"
myMap.get('baz'); // Returns undefined
6.has方法返回一个bool值,用来表明map 中是否存在指定元素.
let myMap = new Map()
myMap.set('bar', "foo")
myMap.has('bar') // returns true
myMap.has('baz') // returns false
7.**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
8.**size**
是可访问属性,用于返回 一个Map
对象的成员数量。
var myMap = new Map();
myMap.set('a', 'alpha');
myMap.set('b', 'beta');
myMap.set('g', 'gamma');
myMap.size // 3
9.**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"
values方法加keys方法相当于entries方法