2012-12-05 32 views
0

可能重複:
Dynamically creating keys in javascript associative array如何分配一個Javascript數組通過它的索引

通常我們初始化一個這樣的數組:

變種AR = [ '你好', '世界'];

而對於訪問它的值,我們這樣做:

警報(AR [0]); //你好

但我想自定義索引來分配,例如:

變種AR = [ '第一'=> '你好', '第二'=> '世界'];

然後

alert(ar ['first']);

但我找不到,是否有這樣的事情,我可以做分配?

謝謝!

+2

http://stackoverflow.com/a/351723/1238887 – ahren

+0

有是在JavaScript關聯數組沒有這樣的事情。你要麼有數字索引數組,或者你有對象:按鍵的無序集合和值 – Bergi

回答

2

您可以使用Object而不是Array,您可以指定對象的命名屬性

var ar = { 
    first: 'hello', 
    second: 'world' 
}; 
alert(ar['first']); 

你也可以只用指定字符串鍵屬性的陣列,這也將工作:

var ar = []; 
ar['first'] = 'first'; 
alert(ar['first']); 
+0

其實我不知道我能訪問對象的節點作爲一個字符串鍵,但現在我知道了,謝謝公司給大家! – Neo

2

你可以這樣做:

var ar = { 
    'first' :'Hello', 
    'second' : 'World' 
}; 

正如你所看到的,這是你在Javascript初始化對象的方式。 JavaScript模糊了關聯數組和對象之間的界限。

ar['first'] 

甚至:

然後,您可以通過訪問這個

ar.first 

此外,您可以在關鍵的初始化離開了引號,像這樣:

var ar = { 
    first :'Hello', 
    second : 'World' 
}; 
+0

請注意,這不是一個數組了。 (但它從來都不是 - 正確的數組沒有名爲索引。) – duskwuff

+0

請解釋他的陣列形式之間的區別'[「值」]'和你的對象的形式'{「鍵」:「值」}'。 –

+0

@DavidThomas:這只是你在JavaScript中初始化散列/對象的方式。 Javascript模糊了兩者之間的界限。你可以在這裏做ar ['first'],或者甚至ar.first。 – RonaldBarzell

2

您需要使用的對象。在JavaScript

var obj = {'first': 'hello', 'second': 'world'}; 

alert(obj.first); 
1

對象只是屬性袋(哈希表)。

您可以:

var ar = {}; 
ar["name"] = "Dave"; 
ar["salary"] = "Millions"; 

alert(ar.name); //Dave 
alert(ar["salary"]); //millions 

JavaScript中允許你在你如何創建這些對象非常靈活。

1

JavaScript沒有關聯數組本身,而是對象文本:

var obj = {foo:'bar'}; 
obj.something = 'else'; 
//or: 
obj['foo'] = 'BAR'; 

,如果你的陣列上創建一個名爲索引(因爲數組對象追溯對象JS不會大驚小怪原型),但你會失去所有使用Array功能(方法,如sort,或神奇length財產,僅舉幾例)

1

只使用

var h = new Object(); // or just {} 
h['one'] = 1; 
h['two'] = 2; 
h['three'] = 3; 

// show the values stored 
for (var k in h) { 
    // use hasOwnProperty to filter out keys from the Object.prototype 
    if (h.hasOwnProperty(k)) { 
     alert('key is: ' + k + ', value is: ' + h[k]); 
    } 
} 
相關問題