0

ist in an Array (より次元の配列) を使用して、配列の配列フィールドを出力しようとしています。2 番目の配列では .length が機能しないようです。

手伝ってくれてありがとう!

乾杯、トニ

<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>
4

3 に答える 3

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

する必要があります

Mitarbeiter[0]["data"] = new Array();
于 2012-04-30T14:13:02.907 に答える
0

あなたの「データ」フィールドはオブジェクト(つまり、プロパティリストまたは辞書)であり、配列ではないため、lengthプロパティがありません。コンストラクト

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

と同じです

var data = { 0: "Ort 1", 1: "Ort 2" };

明らかにlength見つからない場所。

全体を次のように書きます。

var Mitarbeiter = new Array();

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

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

簡潔で分かりやすいと思います。

于 2012-04-30T14:16:34.107 に答える
0

「オブジェクトリテラル」を使用して、すべてを一度に作成できます。

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

中括弧がオブジェクトのタイプをどのように示しているかに注意してください -[ ... ]線形配列の{ ... }場合、「通常の」Javascript オブジェクトの場合。

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

于 2012-04-30T14:20:48.803 に答える