【问题标题】:Dynamic keys in Javascript associative array declaration one-linerJavascript关联数组声明单行中的动态键
【发布时间】:2013-07-24 07:33:48
【问题描述】:

我希望以下三个关联数组是相同的:

arr1 = { "dynamic":"foo", "bar":"baz" };

key = "dynamic";    
arr2 = { key:"foo", "bar":"baz" };

arr3 = {};
arr3[key] = "foo";
arr3["bar"] = "baz";

在上述示例中,arr1arr3 相同,但 arr2 不同。

是否可以在 javascript 关联数组的声明中使用动态键?

【问题讨论】:

标签: javascript


【解决方案1】:

现在可以在任何支持 ES6 文字简写的浏览器/平台中使用动态键来声明 javascript 对象:

key = "dynamic";    
arr2 = {
    [key]: "foo",  // "dynamic": "foo"
    "bar": "baz"
};

【讨论】:

    【解决方案2】:

    只有[] 语法适用于动态键。您不能在文字中使用它们。所以你的答案是否定的,这是不可能的。

    但是您可以使用文字来创建所有静态键,然后使用 [] 语法添加动态键。这通常比对 all 元素使用 .[] 表示法更漂亮。

    【讨论】:

      【解决方案3】:

      我找到了解决方案。

      执行以下操作:

      var field='name';
      
      var ourVar={};
      
      ourVar[field] = 'Somethig';
      

      来源:Javascript: variable as array key

      【讨论】:

        【解决方案4】:

        既然你要求一个班轮,试试这个:

        var key = 'dynamic', obj = (function(o) { o[key]='foo'; return o;})({bar: 'baz'});
        

        这将使obj 等于{bar: "baz", dynamic: "foo"}

        【讨论】:

          【解决方案5】:
          var originalObj = {};//some data here
          
          
          function addKeyValuePair(originalObj,key,value){
              originalObj = {...originalObj,[key]:value}
          };
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-09-25
            • 1970-01-01
            • 1970-01-01
            • 2023-02-09
            相关资源
            最近更新 更多