2011-06-23 9 views
2

私はJSの初心者です。ここに私のコードがあり、私はそれが動作するはずだと信じています...しかし、それはしません。JavaScriptの文字列ベクトルのマップの配列読み込み問題

文字列のベクトルのマップを持つ代替方法はわかりません。ありがとうございます。

ありがとう、

アミール

+0

コードを4つのスペースでインデントしてフォーマットしてください。入力の下のプレビューは、書式設定に役立ちます。 – kassens

答えて

1

これは配列ではなく、そのプロパティに配列を含むJavascriptオブジェクトです。オブジェクトと配列literalsを使用することができます。利点は、コードがはるかにきれいに見えるということです。 new Arrayまたはnew Objectをjavascriptコードで使用する理由はほとんどありません(たとえばthis SO Questionを参照)。

var pop = { 
    la: ['nt','gb','te'], 
    sa: ['nt','gb'], 
    ha: ['pc','pa'] 
} 

今あなたは、プロパティラベルは(あなたが_ecpopのような)変数に格納されている場合、あなたはそれが価値だ取得するためにbracket notiationを使用することができます

for (var i = 0; i < pop.la.length; i++) { 
console.log(pop.la[i]); 
} 

を使用することができます。

var laArr = pop[_ecpop]; 
for (var i = 0; i < laArr.length; i++) { 
console.log(laArr[i]); 
} 

他の方法でオブジェクトにラベルを割り当てることができます。

var _ecpop = 'la'; 
pop[_ecpop] = ['nt','gb','te']; 

document.writeは、あなたのページに物を置くのに好ましい方法ではありません。それは、idを持ついくつかの要素を使用した方が良いと同じように簡単だし、innerHTMLを使用して、それに出力を書き込み、JavaScriptでは例えば

document.getElementById('myOutput').innerHTML = '[some output here]'; 
+0

問題は、_ecpopはURLクエリ文字列から得た文字列です。私はこの方法について考えていましたが、それからそれを動作させる方法がわかりません... – Amir

+0

[_ecpop] (var i = 0; i 編集を参照してください – KooiInc

0

、あなたがテキストのインデックスを使用したい場合、配列は、数値インデックスのみを持つことができます代わりにオブジェクトを使用する必要があります。その後、

var pop = new Object(); 

または

var pop = {}; 

と:

pop['la'] = new Array('nt','gb','te'); 

オブジェクトが配列ではありませんしかし、それは長さメンバーを持っていませんが、ちょうど配列として使用することができますfor..inを入力して、すべての値を確認します。

document.writeを使用するのは、ドキュメントの読み込み時のみで、後では動作しないため、適切な選択肢ではありません。代わりにテキストノードまたはinnerhtmlを使用してみてください。

+0

私は、 var pop = new Array();をvar pop = {}に変更します。 – Amir

関連する問題