我正在尝试使用数组(更多维数组)中的ist输出数组的数组字段。似乎.length在第二个数组中不起作用。
感谢您的帮助!
欢呼,toni<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/> " + Mitarbeiter[i]["data"][f]);
}
}
</script>
</body>
</html>
答案 0 :(得分:2)
Mitarbeiter[0]["data"] = new Object();
应该是
Mitarbeiter[0]["data"] = new Array();
答案 1 :(得分: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"]
});
我认为它更简洁,更容易理解。
答案 2 :(得分:0)
您可以使用“对象文字”一次创建整个内容:
var Mitarbeiter = [ {
Name: 'Hotels',
data: [ 'Ort 1', 'Ort 2' ]
}, {
Name: 'Restaurants',
data: [ 'Ord 2', 'Ort 4' ]
}
];
请注意大括号如何表示对象的类型 - 线性数组为[ ... ]
,“普通”Javascript对象为{ ... }
。
您的data:
字段使用数字索引,因此应该是数组而不是对象,因此请使用[ ... ]
语法。