Open FrankKai opened 5 years ago
new Map([iterable])
。多数情况是传一个数组二维的n*2数组,n代表数组元素个数,2代表数组元素有2个元素,第一个作为Map数据结构的key,第二个作为value。例如[[ 1, 'one' ],[ 2, 'two' ]]
。数组映射为Map是最常用的场景。var map = new Map();
map.set(undefined, undefined);
map.set(null, null);
map.set(true, true);
map.set(24, 24);
map.set(BigInt(24), BigInt(24));
map.set('string', 'string');
map.set(Symbol('foo'),Symbol('foo') );
map.set(()=>'function', ()=>'function');
map.set({},{});
map.set([],[]);
除Symbol在控制台的输出比较特殊以外,其余都蛮正常。
A symbol value may be used as an identifier for object properties; this is the data type's only purpose.
symbol作为一个基础数据类型,只能用在对象的key中。我个人是很少用到这个类型,或许在Map类中会有不一样的火花。
问题一:js中对象的key可以是对象吗?若不能,js对象的key只能是什么,value呢? 不能。js中对象key只能是字符串和Symbol,value可以是任何值。
对于Object和Map来说,设置key-value,查询value,删除key,检测key。由于最初js中只有Object一种可以存储key-value的数据类型,所以几乎所有的key-value都是这样存的,所以Map类型也只能用Object将就。但是,有以下几个强烈推荐使用Map数据类型的场景:
export default [
['业务员', 'salesman'],
['团队', 'team'],
['业务类型', 'businessType'],
];
const dataMap = new Map(data);
dataMap.get('业务员'')
Map是一个可以体现出javascript不将就态度的数据类型,很多场景下Map比Object更加合适也更加严谨。
学习资料:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map