2012-04-30 19 views
0

配列の配列フィールドを配列(より次元の配列)で出力しようとしています。 .lengthは2番目の配列では動作しないようです。Javascript:forループを使用して配列に配列を出力する方法

ありがとうございました!

歓声、トニ

<html><head><title>Test</title> 
</head><body> 
<script type="text/javascript"> 
var Mitarbeiter = new Array(); 

Mitarbeiter[0] = new Object(); 
Mitarbeiter[0]["Name"] = "Hotels"; 
Mitarbeiter[0]["data"] = new Object(); 
Mitarbeiter[0]["data"][0] = "Ort 1"; 
Mitarbeiter[0]["data"][1] = "Ort 2"; 

Mitarbeiter[1] = new Object(); 
Mitarbeiter[1]["Name"] = "Restaurants"; 
Mitarbeiter[1]["data"] = new Object(); 
Mitarbeiter[1]["data"][0] = "Ort 2"; 
Mitarbeiter[1]["data"][1] = "Ort 4"; 



for (var i = 0; i < Mitarbeiter.length; i++) { 

document.write("<b>" + i + " : " + Mitarbeiter[i]["Name"] + "</b><br />"); 

//works 
alert (Mitarbeiter[0]["data"][i]); 


// works not 
for (var f = 0; f < Mitarbeiter[i]["data"].length; f++){ 
document.write("<br/>&nbsp;" + Mitarbeiter[i]["data"][f]); 
} 
} 
</script> 
</body> 
</html> 
+0

これは、["data"] = new Object();という呼び出しが原因です。 。 ["data"] = new Array();が必要です。または単に:["data"] = [];それ以外の場合はオブジェクトです。 –

+0

'Mitarbeiter [0] [" data "] = new Object();' - あなたは 'new Array()'を意味しますか? –

+0

@ブラッド・ノー、彼は '... = [];'を意味しました。 – Alnitak

答えて

0

あなたは「オブジェクトリテラル」を使用して一度に全部を作成することができます。括弧は、オブジェクトのタイプを示す方法

var Mitarbeiter = [ { 
    Name: 'Hotels', 
    data: [ 'Ort 1', 'Ort 2' ] 
    }, { 
    Name: 'Restaurants', 
    data: [ 'Ord 2', 'Ort 4' ] 
    } 
]; 

注 - [ ... ]リニアアレイ、{ ... }のために「通常」のJavascriptのためにオブジェクト。

data:フィールドは数値インデックスを使用するため、オブジェクトではなく配列である必要がありますので、[ ... ]構文を使用してください。

2
Mitarbeiter[0]["data"] = new Object(); 

Mitarbeiter[0]["data"] = new Array(); 
+0

いいえ、それはする必要があります '... = [];' – Alnitak

+0

ん@Alnitakそれ* *次のようになります。 は 'mitarbeiter [0] [ "データ"] = [];' するmitarbeiterはすべきではないので、大文字を使って:) – aquinas

+0

お元気ですか?_-それについて話しているなら、..-) – Alnitak

0

あなたの "データ" フィールドはオブジェクト(すなわちプロパティリストや辞書)とない配列であり、そのようにlengthを持っていないであるべきプロパティ。構造

var data = new Object(); 
data[0] = "Ort 1"; 
data[1] = "Ort 2"; 

明らかに発見されるいかなる lengthはありません
var data = { 0: "Ort 1", 1: "Ort 2" }; 

と同じです。

私はこのような全体のこと書かれているだろう:私はそのより簡潔で理解しやすいと思います

var Mitarbeiter = new Array(); 

Mitarbeiter.push({ 
    Name: "Hotels", 
    data: [ "Ort 1", "Ort 2" ] 
}); 

Mitarbeiter.push({ 
    Name: "Restaurants", 
    data: [ "Ort 2", "Ort 4"] 
}); 

を。

関連する問題