簡體   English   中英

如何在散列中將變量值分配為變量名?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM