簡體   English   中英

JavaScript - 聲明關聯數組的簡短方法

[英]JavaScript - short way of declaring an associative array

是否有像PHP中那樣聲明關聯數組的簡短方法?

$myArray = array('a' => 'b'); // PHP Way

在JavaScript中我會這樣做:

var myArray = [];
myArray['a'] = 'b';

我不是在尋找JavaScript對象。

聲明一個這樣的對象:

var myArray = {"a": "b", "c": "d"};

...然后像這樣引用每個項目:

var somethingElse = myArray["a"]; //Sets "somethingElse" to "b".

正如@Chris和@Marc在評論中提到的:在JavaScript中,對象是關聯數組,反之亦然,它們只是指兩種不同的方式來做同樣的事情。 例如...

var somethingElse = myArray["a"];
var anotherVariable = myArray.a;

... 做同樣的事。

JavaScript沒有關聯數組。 在您的示例中,您將myArray聲明為數組,然后為其分配一個對象。 所以你的代碼與此沒有什么不同:

var myObject = {};
myObject['a'] = 'b';

更新:稍作修正。 實際上,原始代碼不會破壞數組。 它只是附加一個常規屬性。 這是可能的,因為JavaScript數組是JavaScript對象的子集。

我不是在尋找JavaScript對象。

JavaScript中沒有“關聯數組”,只有由屬性名稱和值組成的對象可以這樣處理。 所以,你所尋找的實際上是對象。 實際上,您的問題中的這個示例是使用對象:

var myArray = [];
myArray['a'] = 'b';
alert(typeof myArray); // 'object'

您最初使用數組文字語法構造對象:

var myArray = [];

這意味着您已創建一個繼承自Array.prototype的對象。 基本上,您正在處理一個已使用存儲在Array.prototype的方法進行擴充的對象。

要檢查myArray實際上是一個數組(好吧,我會說JavaScript數組是偽數組),你可以檢查它的構造函數:

alert(typeof myArray === 'object' && myArray.constructor === Array);

還有一種更好的方法可以識別在不同窗口和框架中構建的數組:

alert(Object.prototype.toString.apply(myArray) === '[object Array]');

您還可以使用instanceOf

alert(myArray instanceof Array);

Array.isArray

alert(Array.isArray(myArray));

在javascript中,關聯數組,鍵控集合,哈希,......無論你想要什么,它們都不是特殊類型。 以下所有都很好。

a = {}
a[3] = 15
a.b = "c"
a['def'] = 'something'

此代碼生成一個具有您期望的屬性的有效對象。 他們都是。 您可以在一個對象中組合常規索引數組和關聯數組。

至於一次聲明一大堆,通常的語法是:

a = {
    'key1' : 'val1',
    'key2' : val2,
    key3 : val3,
    key4 : "val4"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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