【问题标题】:Cannot assign a key as an object in the declaration of a JavaScript map无法在 JavaScript 映射的声明中将键分配为对象
【发布时间】:2020-10-24 18:56:01
【问题描述】:

Map 的键可以是任何值(包括函数、对象或任何原语)。 但是为什么像下面代码中的方式分配键值对是错误的呢?

let myMap=new Map({ {'A':'B'}:{'a':'b'}, {'C':'D'}:{'c':'d'} })

【问题讨论】:

    标签: javascript maps key


    【解决方案1】:

    因为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] 它当然不会工作。还有更多好处吗?
    【解决方案2】:

    我试图弄清楚这一点,我发现这种语法可以工作:

    让 myMap=new Map([['A','B'],['a','b']]);

    【讨论】:

    • 但这只是一个数组的数组...就像 let data=[['A','B'],['a','b']] 所以,没有需要地图。还是我错过了什么?
    • 感谢弗拉德的澄清。我只是误解了地图的概念。无论如何,如果我的语法可以工作,那就太好了......
    猜你喜欢
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    相关资源
    最近更新 更多