javascript
にはassociative arrays
はなく、objects
のみが存在することを理解しています。
ただし、次のようにbracket notation
を使用して、文字列キーでarray
を作成できます。
var myArray = [];
myArray['a'] = 200;
myArray['b'] = 300;
console.log(myArray); //prints [a: 200, b: 300]
だから、bracket notation
を使用せずにまったく同じことをしたい
var myNewArray = [a: 200, b: 300]; //getting error - Unexpected token:
これも機能しません
var myNewArray = ['a': 200, 'b': 300]; //same error, why can I not create?
JavaScriptには連想配列はなく、オブジェクトだけがあります。 JavaScriptの配列でさえ基本的に単なるオブジェクトであり、プロパティ名が数字(0,1、...)であるという特別なことだけがあります。
最初にコードを見てください:
var myArray = []; // creating a new array object
myArray['a'] = 200; // setting the attribute a to 200
myArray['b'] = 300; // setting the attribute b to 300
myArray['a'] = 200;
が同一とmyArray.a = 200;
であることを理解することが重要です!
だからあなたが欲しいものから始めるために:あなたはjavascript配列を作成することはできず、1つのステートメントでそれに数値属性を渡すことはできません。
しかし、これはおそらくあなたが必要とするものではありません!おそらく、JSオブジェクトが必要なだけです。これは、他の言語の連想配列、辞書、またはマップと基本的に同じものです。文字列を値にマップします。そして、それは簡単に行うことができます:
var myObj = {a: 200, b: 300};
しかし、これはあなたがやったこととわずかに異なることを理解することが重要です。 myObj instanceof Array
は、false
がプロトタイプチェーンのmyObj
の祖先ではないため、Array
を返します。
マップを使用できます:
var arr = new Map([
['key1', 'User'],
['key2', 'Guest'],
['key3', 'Admin'],
]);
var res = arr.get('key2');
console.log(res); // The value is 'Guest'
この場合、オブジェクトを使用したい
var myObject = {'a' : 200, 'b' : 300 };
この回答は、より詳細な説明にリンクしています: JavaScriptで連想配列/ハッシュを行う方法 ( http://blog.xkoder.com/2008/07/10/javascript- associative-arrays-demystified / )
さて、実際にはオブジェクトである配列を作成しています。
var arr = [];
arr.map;
// function(..)
arr['map'];
// function(..)
arr['a'] = 5;
console.log(arr instanceof Object); // true
arr
にフィールドと関数を追加できます。ただし、それらは配列に「挿入」されません(arr.Push(...)
など)
[]
構文でオブジェクトフィールドを参照できます。
配列とオブジェクトは別のものです。
オブジェクトの場合、次のようなことができます。
var obj = { "property1": "value1" };
obj.property2 = "value2";
配列の場合、これを行う必要があります。
var arr = [];
arr[0] = "value";