我希望以下三个关联数组是相同的:
arr1 = { "dynamic":"foo", "bar":"baz" };
key = "dynamic";
arr2 = { key:"foo", "bar":"baz" };
arr3 = {};
arr3[key] = "foo";
arr3["bar"] = "baz";
在上面的例子中,arr1
和arr3
是相同的,但又arr2
是不同的。
是否可以在 javascript 关联数组的声明中使用动态键?
我希望以下三个关联数组是相同的:
arr1 = { "dynamic":"foo", "bar":"baz" };
key = "dynamic";
arr2 = { key:"foo", "bar":"baz" };
arr3 = {};
arr3[key] = "foo";
arr3["bar"] = "baz";
在上面的例子中,arr1
和arr3
是相同的,但又arr2
是不同的。
是否可以在 javascript 关联数组的声明中使用动态键?
现在可以在任何支持 ES6 文字简写的浏览器/平台中,在 javascript 对象的声明中使用动态键:
key = "dynamic";
arr2 = {
[key]: "foo", // "dynamic": "foo"
"bar": "baz"
};
只有[]
语法适用于动态键。您不能在文字中使用它们。所以你的答案是否定的,这是不可能的。
但是您可以使用文字来创建所有静态键,然后使用[]
语法添加动态键。这通常比对所有元素使用.
or[]
表示法更漂亮。
我找到了解决方案。
执行以下操作:
var field='name';
var ourVar={};
ourVar[field] = 'Somethig';
既然你要求一个班轮,试试这个:
var key = 'dynamic', obj = (function(o) { o[key]='foo'; return o;})({bar: 'baz'});
这将使obj
等于{bar: "baz", dynamic: "foo"}
var originalObj = {};//some data here
function addKeyValuePair(originalObj,key,value){
originalObj = {...originalObj,[key]:value}
};