Javascript:如何使用for循环在数组中输出数组

时间:2012-04-30 14:10:11

标签: javascript arrays dimensional

我正在尝试使用数组(更多维数组)中的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/>&nbsp;" + Mitarbeiter[i]["data"][f]);
}
}
</script>
</body>
</html>

3 个答案:

答案 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:字段使用数字索引,因此应该是数组而不是对象,因此请使用[ ... ]语法。