Map 对象
Map对象保存键值对,并且能够记住键的原始插入顺序。任何值(对象或者基本类型)都可以作为一个键或者一个值。
Map对象是键值对的集合。Map中的一个键只能出现一次;它在Map的集合中是独一无二的。Map对象按键值对迭代——一个for...of循环在每次迭代后会返回一个形式为[key, value]的数组。迭代按照插入顺序进行,即键值对按set()方法首次插入到集合中的顺序(也就是说,当调用set时,map中没有具有相同值的键)进行迭代。
我们通常见到的键值对只是a:1的这种形式,实际上[a, 1] { a => 1 }这种形式都是键值对的形式。
键的相等性
Map键的比较基于零值相等算法。(它曾经使用同值相等,将0和-0视为不同。检查浏览器兼容性。)这意味着NaN是与NaN相等的,虽然NaN !== NaN,剩下所有的其它的值是根据===运算符的结果判断是否相等。
**Map**构造函数中的参数
Map构造函数中的参数接收二维数组,数组内部是以键值对的形式存在的,例如:
const map = new Map([
[{}, '1'],
['too', 'bar'],
[true, 'false'],
]);
**Map**实例属性、实例方法
Map实例属性size:返回Map对象中的键值对数量,注意是[[Entries]]属性内部的键值对数量,并不是Map对象自身上的属性数量。
Map实例方法:
clear:移除Map对象中所有的键值对。delete:移除Map对象中指定的键值对,如果键值对存在并成功被移除,返回true,否则返回false。调用delete后再调用map.has(key)将返回false。has:返回一个布尔值,用来表明Map对象中是否存在与指定的键key关联的值。get:返回与指定的键key关联的值,若不存在关联的值,则返回undefined。set:在Map对象中设置与指定的键key关联的值,并返回Map对象。keys:返回一个新的迭代对象,其中包含map对象中所有的键,并以插入Map对象的顺序排列。values:返回一个新的迭代对象,其中包含map对象中所有的值,并以插入Map对象的顺序排列。entries:返回一个新的迭代对象,其为一个包含map对象中所有键值对的[key, value]数组,并以插入Map对象的顺序排列。forEach:以插入的顺序对Map对象中存在的键值对分别调用一次callbackFn。如果给定了thisArg参数,这个参数将会是回调函数中的this值。
const map = new Map();
map.set({a:1}, 'a:1');
map.set({a:2}, 'a:2');
map.forEach((key, value)=>{
console.log(key, value); // a:1 {a:1}
});
480

被折叠的 条评论
为什么被折叠?



