https://www.cnblogs.com/ht955/p/14170885.html https://www.cnblogs.com/Hijacku/p/16457600.html MAP数据类型是一个类似于对象的数据类型,大型项目中会经常使用。 通过 构造函数来定义MAP数据类型 const map = new Map() 如果需要在定义的同时进行赋值,赋值的参数必须是二维数组形式 二维数组,统一都是两个单元,第一个单元是Map的键名,第二个单元是Map的数值 二维数组,第一个单元,也就是键名不能重复的 [ [键名1,数值1] , [键名2,数值2] , [键名3,数值3] , [键名4,数值4] , [键名5,数值5] ] 操作语法: 1, set() 新增Map数据类型单元 参数1:新增单元的键名 参数2:新增单元的键值 2, get() 获取单元数据 参数1:获取单元的键名执行结果是对应的数据数值 3, delete() 删除单元 参数1:删除单元的键名 4, clear() 清除单元 5, forEach() 循环遍历 参数设定方式与数组参数方式相同 参数1:单元数据 参数2:单元键名 参数3:map本身 6, has() 判断是否是map单元的键名 const map = new Map( [['name1','张三'],['name2','李四'],['name3','王五']] ); // 新增单元 map.set('name4','赵六'); // 删除单元 // map.delete('name2'); // 清除所有单元 // map.clear(); // 循环遍历单元 map.forEach((item,key)=>{ console.log(item,key) }) // 判断是否是map单元的键名 console.log( map.has('name3') ); console.log(map); console.log(map.get('name3'));
Object 中的 key 只能是 Sting 类型的,如果将非String类型的当做key, 会转成String。Object[2] 和 Object['2'] 获取到同一个value。
Object中没有直接的api去返回Object的 key的数目,也就是键值对的个数。但是Map可以直接通过 Map.size 获取键值对的个数。
Object 中 key的顺序是无序的,不会按照添加的顺序返回。
对象可以序列化 JSON.stringify(), map 默认不允许序列化, 需要借助 Array.from(map)再去序列化。
Object 默认不具备iterator (迭代器)特性(用于提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。),直接 for of Object 会报错。 Map.value(keys|entries) 等方法返回值都具有iterator特性。
Map 中的键值对中的 key 中的类型是严格区分的 ,也就是 使用 === 来判断是不是同一个地址。
Map中的key是有序的,会按照定义时的顺序进行输出!!!
比如:
let maps = new Map();
maps.set(2, '我的key是 数字2');
maps.set('2', '我的key是字符2');
但是 有一个特例需要注意就是 NaN;
我们知道 NaN 与任何的类型的值比较 返回的都是false, 包括本身。 但是在map中;
NaN 当做key的时候,set多个NaN 却会被当做同一个key;
例如:
maps.set(NaN,1);
maps.set(NaN,2);
=>
可以看到 后面的赋值会覆盖前面的。
总结:
标签:map,Object,键名,Map,object,数据类型,key,单元 From: https://www.cnblogs.com/Dongmy/p/17130246.html