2011-02-03 19 views
4

結合配列へのjavascriptの値の設定方法は?結合配列へのJavaScript設定値

この場合には、私はエラーを取得する理由:「車を[0]は未定義である」

var car = new Array(); 
car[0]['name'] = 'My name'; 
+0

「連想配列」は単純なオブジェクトであり、あいまいさのために新しい配列()を使用しないでください。 –

+0

私はそのことを考えなかった... @ user319854、あなたは実際に連想配列になるようにしたかったのですか? var car = {name: 'My name'}のように。多分? –

答えて

8

あなたがcar[0]を定義したことはありませんので。あなたは(空の)オブジェクトで初期化する必要があります。

var car = [{name: 'My Name'}]; 

か、この1:

var car = []; 
car[0] = {name: 'My Name'}; 

か、この1:

var car = []; 
car[0] = {}; 
car[0]['name'] = 'My name'; 

別の解決策はこのことだろう

var car = []; 
car.push({name: 'My Name'}); 
+0

JavaScriptではセミコロンは通常必要ありませんが、[ASI](http://inimino.org/~inimino/blog/javascript_semicolons)はJavaScriptがもっとも悪いものの1つで、私はそれらを追加しました(忘れてしまった)。 – ThiefMaster

+1

+1オブジェクトと配列リテラルの使用は、実際にははるかに読みやすくなります。 –

+0

@エリック:+1の代わりに-1をしたと思います。 – ThiefMaster

3
var car = []; 
car.push({ 
    'name': 'My name' 
}); 
+1

Fyiでは、オブジェクトリテラルの引用キーは、予約された特定のキーワードと衝突しない限り、オプションです。 – ThiefMaster

+1

@ThiefMaster、yup - しかし引用符では、特殊文字( - など)でオブジェクトリテラルを作成することもできます。だから、常にそれらを使う方が安全です。 –

1

一度に2つのステップを取っている:車の配列の項目0は未定義です。 'name'プロパティの値を設定するオブジェクトが必要です。

あなたは[0]のように車の中で空のオブジェクトを初期化することができます

car[0] = {}; 

最初の行のアレイ()コンストラクタを呼び出す必要はありません。これは書くことができます。

var car = []; 

、あなたは、配列内のオブジェクトを持つようにしたい場合:

var car = [{}]; 
0

あなたの例では、car[0]は初期化されておらず、undefinedで、undefinedの変数はプロパティを持つことができません(結局のところ、連想配列の値を設定するとオブジェクトのメソッドを設定するという意味です)。

+0

*メソッド*ではなく*プロパティ*。 –

関連する問題