對不起,問一個小白的問題,但如果我有一個數組:Javascript數組索引
MyArray["2cd"]="blah1";
MyArray["3cx"]="blah3";
MyArray["8cz"]="blah2";
和一個字符串myStr="2cd";
然後我用MYARRAY [myStr中]獲得嗒嗒的價值,我怎樣才能得到我在對象/數組中訪問的數字,還是0在這種情況下?
對不起,問一個小白的問題,但如果我有一個數組:Javascript數組索引
MyArray["2cd"]="blah1";
MyArray["3cx"]="blah3";
MyArray["8cz"]="blah2";
和一個字符串myStr="2cd";
然後我用MYARRAY [myStr中]獲得嗒嗒的價值,我怎樣才能得到我在對象/數組中訪問的數字,還是0在這種情況下?
如果我可以在字裏行間,它聽起來就像你認爲你發佈的代碼:
MyArray["2cd"] = "blah1";
MyArray["3cx"] = "blah3";
MyArray["8cz"] = "blah2";
將自動成爲相當於:
MyArray[0] = MyArray["2cd"] = "blah1";
MyArray[1] = MyArray["3cx"] = "blah3";
MyArray[2] = MyArray["8cz"] = "blah2";
,因此,你可以得到字符串"blah1"
以下兩種方法之一:
var foo = MyArray[0]; // sets foo to "blah1"
var bar = MyArray["2cd"] // also sets bar to "blah1"
但這不是JavaScript的作品。
你當然可以一套事情,所以你可以使用我的MyArray[0]
和MyArray["2cd"]
獲取相同的值,但你必須明確地做它在我的例子。
你沒有提到的一件事是你如何宣佈本身。是Array
還是Object
?也就是說,您發佈的代碼之前,你創建有:
var MyArray = {}; // or equivalently, var Array = new Object;
或:
var MyArray = []; // or equivalently, var Array = new Array;
第一個示例創建一個Object
,第二的Array
。
有點令人困惑的是JavaScript有這兩種類型,在很多情況下,你可以互換使用。但是,當你在對象中使用任意(通常但不一定是非數字)的鍵時,通常使用Object
,如你的例子。相反,當您主要使用嚴格的數字索引時,習慣上使用Array
。
實際上,JavaScript的Array
類型從Object
類型繼承。一個Array
僅僅是一個Object
具有一些附加的行爲:
一個Array
具有額外的方法,如其中.push()
追加項目到陣列。
的Array
有.length
屬性,當你用.push()
或直接array[123]
分配,或添加元素,其會自動更新,當你刪除與.pop()
或其他方法的元素。
正如Fabrício指出的那樣,JavaScript沒有的東西就像一個「關聯數組」,其行爲與其他語言中的相似。它有對象,它有陣列(從對象繼承),你必須按照他們自己的條件處理每一個。
你可以先清楚地說明JS中沒有關聯數組。 –
絕對!謝謝你提到這一點。當我在商場等待女兒的時候,我從我的手機上發佈了我的原始回覆,所以它有點簡潔。現在我有一個方便的鍵盤,我詳細闡述了數組與對象之間的關係。 –
索引是一個數字。如果cd是一個數字,或者你需要parseInt(「2cd」,10),那麼你可以訪問MyArray [0]或者MyArray [cd],那麼返回2就可以做MyArray [2]。 – frenchie
「索引」是一個數字串(例如「0」,「1」,「2」)。對於OP,javascript數組只是具有特殊長度屬性的普通對象以及從Array.prototype繼承的方法。所以你可以像對象一樣使用數組(不喜歡,但工作得很好)。許多數組方法是通用的,可以在具有合適屬性的普通對象上使用。 – RobG
我已經從你給出的例子中創建了一個jsfiddle演示:http://jsfiddle.net/zxZTX/ –