我需要動態設置JS對象屬性名稱。如何從變量設置JS對象屬性名稱
for(i=1; i<3; i++) {
var key = i+'name';
data = {
key : 'name1',
}
}
的結果應該是:
data = {
1name: 'name1'
2name: 'name1'
}
我需要動態設置JS對象屬性名稱。如何從變量設置JS對象屬性名稱
for(i=1; i<3; i++) {
var key = i+'name';
data = {
key : 'name1',
}
}
的結果應該是:
data = {
1name: 'name1'
2name: 'name1'
}
這是動態的設定值
var jsonVariable = {};
for (var i = 1; i < 3; i++) {
var jsonKey = i + 'name';
jsonVariable[jsonKey] = 'name' + i;
}
你將不得不使用[]
符號來動態地設置鍵的方式。
var jsonVariable = {};
for(i=1; i<3; i++) {
var jsonKey = i+'name';
jsonVariable[jsonKey] = 'name1';
}
現在ES6可以使用對象文本語法動態創建對象鍵,只是包裝的變量[]
var key = i + 'name';
data = {
[key] : 'name1',
}
檢查了這一點
jsonVariable = {};
for(i=1; i<=3; i++) {
jsonVariable[i]=i+'name';
}
document.writeln(jsonVariable[1]);
document.writeln(jsonVariable[2]);
document.writeln(jsonVariable[3]);
jsonVariable = {}
for(i=1; i<3; i++) {
var jsonKey = i+'name';
jsonVariable[jsonKey] = 'name1'
}
這將類似於
在下面的新的瀏覽器var keyName = 'myKey';
var obj = {
[keyName]: 1
};
obj.myKey;//1
這句法可用:
的ECMAScript 6,你可以使用變量屬性名稱與對象文字語法,這樣
邊緣12+(不支持IE),FF34 +,Chrome瀏覽器44+,歌劇31+,Safari瀏覽器7.1+
(https://kangax.github.io/compat-table/es6/)
您可以使用transpiler(如babel)爲舊版瀏覽器添加支持。如果您正在使用模塊打包程序(例如rollup或webpack),則可以輕鬆地整個項目的傳輸。
變量來自哪裏並不重要。主要的東西我們有一個...... 在方括號「[..]」之間設置變量名稱。
var optionName = 'nameA';
var JsonVar = {
[optionName] : 'some value'
}
這工作很好,我不知道它是否適用於所有瀏覽器/版本 – Mercury
如果他們是連續的,爲什麼你不使用數組? – epascarello
我想知道你們哪三個擊中了錯誤的箭頭。來吧,大發脾氣。 – Charles
[在JavaScript對象文本中爲鍵使用變量]的可能的重複(http://stackoverflow.com/questions/2274242/using-a-variable-for-a-- a-key-in-a-javascript-object-字面) – halfer