0

我正在尝试在数组(多维数组)中输出带有 ist 的数组的数组字段。似乎 .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 回答