2013-05-20 67 views
5

是否可以使用變量設置數組的自定義索引。帶有自定義變量索引的Javascript數組

例如:

var indexID = 5; 
var temp = { 
    indexID: new Array() 
}; 

上面的例子將數組索引indexID和不5。我曾嘗試使用= snd引號,但我沒有任何成功。

Thnaks

+1

只是爲了清晰。 **'temp'不是數組。** – Bart

+0

這仍然不起作用。這工作:var temp = {5:new Array()}; - 但是如果我用5代替一個變量,它就會崩潰。我試過所有建議的解決方案... –

+0

好的,我看到我很混亂的數組和對象。換句話說,我想要做的是創建一個數組,因爲它的第一個數字索引的值不是0.所以我的第一個索引是5. –

回答

12

是的,只是使用方括號表示法:

var temp = {}; 
temp[indexID] = []; 

還要注意這樣的事實:temp是一個對象,而不是一個數組。在JavaScript中,所有關聯數組(或字典)被表示爲對象。

更多:http://www.jibbering.com/faq/faq_notes/square_brackets.html#vId

+0

感謝您提供有用的答案。我認爲我試圖做的不是最佳實踐,所以我改變了我的方法,並使用0作爲數組的第一個索引。我試圖將數組的索引加倍爲變量,事後看來是不實際的。 –

1

與您的代碼,您將創建一個對象。

相反,你可以做

var indexID = 5; 
var temp = []; 
temp[indexID] = []; 
4

我想你想要的是:

var indexID = 5; 
var temp = {}; 
temp[indexID] = "stuff" 
0

您與Object混合Array。數組知道一個(數字)索引,對象由鍵值對組成,其中鍵可以是任何字符串。

不是每個人都會同意,BU可以擴展Object.prototype

Object.prototype.append = function(key,val){ 
    // confine to Object instances 
    if (this.constructor !== Object && 
     !/object/i.test(this.constructor.prototype)) { return this; } 
    this[key] = val; 
    return this; 
} 

而且隨後使用:

var temp = {}.append(indexID,[]}; 
0

節點紅色的項目,我不得不撇號添加到索引名

var Trend_1={}; 

Trend_1[**'x'**]=Date_TimeArray;