PHPのように連想配列を宣言する簡単な方法はありますか?
$myArray = array('a' => 'b'); // PHP Way
JavaScriptでは、次のようにします。
var myArray = [];
myArray['a'] = 'b';
私はJavaScriptオブジェクトを探していません。
JavaScriptには連想配列はありません。あなたの例では、myArray
を配列として宣言していますが、それにオブジェクトを割り当てています。したがって、コードはこれと同じです:
var myObject = {};
myObject['a'] = 'b';
更新:少し修正。実際、元のコードは配列を破壊しません。通常のプロパティを追加するだけです。これは、JavaScript配列がJavaScriptオブジェクトのサブセットであるために可能です。
次のようなオブジェクトを宣言します。
var myArray = {"a": "b", "c": "d"};
...そして、次のように各項目を参照します。
var somethingElse = myArray["a"]; //Sets "somethingElse" to "b".
@Chrisと@Marcがコメントで言及しているように、JavaScriptでは、オブジェクトは連想配列であり、その逆の場合も、同じことを行う2つの異なる方法を参照するだけです。例えば...
var somethingElse = myArray["a"];
var anotherVariable = myArray.a;
...同じことをします。
私は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'
このコードは、期待するプロパティを持つ単一の有効なオブジェクトを生成します。それらすべて。従来のインデックス付き配列と連想配列を1つのオブジェクトに組み合わせることができます。
束全体を一度に宣言する場合、通常の構文は次のとおりです。
a = {
'key1' : 'val1',
'key2' : val2,
key3 : val3,
key4 : "val4"
}