【发布时间】:2020-10-24 18:56:01
【问题描述】:
Map 的键可以是任何值(包括函数、对象或任何原语)。 但是为什么像下面代码中的方式分配键值对是错误的呢?
let myMap=new Map({ {'A':'B'}:{'a':'b'}, {'C':'D'}:{'c':'d'} })
【问题讨论】:
标签: javascript maps key
Map 的键可以是任何值(包括函数、对象或任何原语)。 但是为什么像下面代码中的方式分配键值对是错误的呢?
let myMap=new Map({ {'A':'B'}:{'a':'b'}, {'C':'D'}:{'c':'d'} })
【问题讨论】:
标签: javascript maps key
因为Map 对象采用可迭代参数new Map([iterable])
, 但 Object 是不可迭代的
可迭代协议允许 JavaScript 对象定义或自定义它们的迭代行为,例如在 for...of 构造中循环的值。一些内置类型是具有默认迭代行为的内置可迭代对象,例如 Array 或 Map,而其他类型(例如 Object)则不是。
请参阅关于可迭代的内容
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols
【讨论】:
let myMap = new Map([[1, 'one'], [2, 'two'], [3, 'three'],]) 和 let myArray = [[1, 'one'], [2, 'two'], [3, 'three']] 之间的区别
myMap.get(2) 并获得“两个”,但使用meArray.get[2] 它当然不会工作。还有更多好处吗?
我试图弄清楚这一点,我发现这种语法可以工作:
让 myMap=new Map([['A','B'],['a','b']]);
【讨论】: