2016-05-29 13 views
5

javascriptにないことを理解します。objectsのみです。私はこのようなbracket notationを使用して文字列のキーを持つarray作成することができますしかし Javascriptのリテラル表記でアソシエイティブ配列を作成する方法

:そう

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? 
+0

これを使用すると間違っている? '' var myNewArray = {'a':200、 'b':300}; ' – MT0

+0

@ MT0 - それは動作しますが、なぜ配列表記[]で動作しないのか理解しようとしていますか? –

+4

オブジェクトではなく、配列が必要です。 – SLaks

答えて

4

を持つオブジェクトのフィールドを参照することができます(のようなarr.push(...)

しかし配列にそれらを「挿入」しません。 JS配列でさえ基本的に単なるオブジェクトです。プロパティ名は数字(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 300 

その重要myArray['a'] = 200;myArray.a = 200;から同じであることを理解すること!

あなたが欲しいものから始める: JavaScript配列を作成して、1つのステートメントで番号属性を渡すことはできません。

これはおそらく必要なものではありません。たぶんJSオブジェクトが必要ですが、他の言語の連想配列、辞書、マップと基本的に同じです。文字列を値にマッピングします。それは簡単に行うことができます:

var myObj = {a: 200, b: 300}; 

しかし、これはあなたがやったことと少し違うことを理解することが重要です。 myObj instance of Arrayfalseを返します。これは、myObjがプロトタイプチェーンのArrayの祖先ではないためです。

+0

javascriptにはファーストクラスの配列があるので、何もない –

+0

何ですか?彼らはファーストクラスですが、依然としてオブジェクトとして実装されています。 '[] instanceof Object === true'を参照してください! – Lux

+0

うん、すべてはJSの土地のオブジェクトである。ヌル以外は –

1

さて、あなたは実際にはオブジェクトである配列を、作成しています。

var arr = []; 
arr.map; 
// function(..) 
arr['map']; 
// function(..) 

arr['a'] = 5; 

console.log(arr instanceof Object); // true 

arrにフィールドと機能を追加できます。それはあなたがJavascriptが何の連想配列、単にオブジェクトを持っていない[]構文

1

配列とオブジェクトは異なるものです。オブジェクトの場合

、あなたがのようなものを行うことができます。

アレイの場合
var obj = { "property1": "value1" }; 
obj.property2 = "value2"; 

を、あなたはこれをしなければならない。

var arr = []; 
arr[0] = "value"; 
0

あなたは地図を使用することができますは何

var arr = new Map([ 
    ['key1', 'User'], 
    ['key2', 'Guest'], 
    ['key3', 'Admin'], 
]); 
var res = arr.get('key2'); 
console.log(res); // The value is 'Guest' 
関連する問題