[英]how to assign variable value as variable name in a hash?
我需要定義一個散列來使用 jQuery 發布一些 ajax 數據。 哈希將類似於:
var setname = 'set_1';
elements = { set_1: {'beer','water','wine'} };
我需要解決的挑戰是 'set-1'(數組元素的鍵)應該根據var setname
的值動態命名。
我當然想避免使用eval()
.. 在 PHP 中它可以使用這樣的雙美元符號來完成: $$setname
,但是在 JavaScript 中這樣做的方法是什么?
你可以做你想要的事情:
var setname = 'set_1', elements = {};
elements[setname] = ['beer','water','wine'];
alert(elements['set_1']); // beer,water,wine
請參閱http://jsfiddle.net/x5KRD/上的此操作。
可以使用點表示法 ( obj.method()
或obj.property
)或括號表示法 ( obj['method']()
或obj['property']
)訪問JS中的所有對象。 使用括號表示法可以動態指定方法/屬性/鍵名稱。
例如,雖然笨拙,但是window['alert']('hi')
等同於window.alert('hi')
。
請注意,無論如何,您的代碼將無法正常工作,因為您使用對象文字符號( {'beer','water','wine'}
)來包含數組(它應該放在方括號中['beer','water','wine']
代替)。 對象文字需要具有鍵值對。
var setname = 'set_1',
elements = {};
elements[setname] = ['beer','water','wine'];
你必須明白Javascript中確實沒有“JSON符號”這樣的東西 - 它是我們正在討論的原生Javascript符號。 jQuery想要的是POST數據的Javascript值,不一定是Javascript對象常量。
因此,您的代碼將准備您的POST數據,如下所示:
var elements = {};
elements[setName] = { /* something */ };
elements[somethingElse] = { /* something else */ };
等等。 當您准備好進行POST時,您只需使用“元素”:
$.post(url, elements, function() { /* callback code */ });
直接使用方括號中的標識符:
const setname = 'set_1';
const elements = { [setname]: ['beer','water','wine'] }
請記住列表中方括號的使用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.