【问题标题】:JavaScript associate arrayJavaScript 关联数组
【发布时间】:2011-07-22 23:52:42
【问题描述】:

在 Python 中,我可以执行 myMap = {key: [value1, value2]} 之类的操作,然后使用 myMap[key][1] 访问 value2

我可以在 JavaScript 中做这样的事情吗?

【问题讨论】:

    标签: javascript associative-array


    【解决方案1】:

    好吧,你可以这样做:

    var myMap = { key: [ value1, value2 ] };
    var array = myMap.key; // or myMap["key"]
    

    JavaScript 没有“关联数组”类型,它结合了“映射”行为和数组行为,例如跟踪属性的数量。因此,常见的做法是使用普通对象。在现代 JavaScript(2017 年)中,有一个明确的 Map 设施,它允许键是任何类型,而不仅仅是使用简单对象时的字符串。

    JavaScript 对对象字面量表示法有点傻,因为它不允许你使用保留字作为键,除非你引用它们:

    var myMap = { 'function': 'hello world' };
    

    引号语法允许将任何字符串用作属性名称。要访问此类属性,您可以使用 [ ] 运算符

    console.log(myMap["function"]); // "hello world"
    

    【讨论】:

    • 你声明了一个对象而不是数组!
    • @SuhaybKharabsheh ??正确的?当您需要非数字属性名称时,不应使用 JavaScript 数组(除非您有充分的理由)。
    • 这两种方法如何扩展(比如 10,000 或 1,000,000 个元素)?例如。用于插入和查找?有什么区别吗?例如。 quadratic behavior 将设置元素数量的(实际)上限。
    • @PeterMortensen 对普通 JavaScript 对象的属性查找和更一般的管理,如您所想,高度优化。
    【解决方案2】:

    确实如此。

    var myMap = {london: ['clapham', 'chelsea'], bristol:['clifton', 'redland']}
    
    alert(myMap.london[0]);
    alert(myMap['bristol'][1]);
    

    jsFiddle上查看此示例

    【讨论】:

      【解决方案3】:

      是的,语法也差不多。

      var myMap = {key: ["value1", "value2"]};
      alert(myMap["key"][1]); // Pops up an alert with the word "value2"
      

      您还可以使用以下符号:

      myMap.key[1]
      

      【讨论】:

        【解决方案4】:

        简短的回答...是的...

        var m = { Foo : ["Bar", "Baz"] };
        
        alert(m.Foo[0]);
        alert(m["Foo"][1]);
        

        【讨论】:

          【解决方案5】:

          你可以使用地图:

          var myMap = new Map();
          myMap.set('key','Value');
          var res = myMap.get('key');
          
          console.log(var); // Result is: 'Value'
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-10-09
            • 2011-02-01
            • 2011-05-24
            相关资源
            最近更新 更多