我有一个如下所示的数组:
数组中的内容是从xml文件中获取的,如下所示:
有没有办法对数组内容进行分组,例如,因为你可以看到斑点狗重复三次,因为它有3个菜。我希望我的数组像[“id”,“spotted dog”,“dish1”,“dish2”,“dish n ++”]
我坚持了很长一段时间,所以非常感谢你的帮助。 下面的代码确实获取了xml文件并在数组中拍摄内容
downloadUrl("php_to_xml.php",function(data){
var xml = data.responseXML;
var array = [];
var markers = xml.documentElement.getElementsByTagName("resdetails");
var detail = xml.documentElement.getElementsByTagName("detail1");
for (r = 0; r < detail.length; r++){
var maindetail = detail[r].childNodes[0].getAttribute('name');
var mainid = markers[r].getAttribute('id');
var dish = detail[r].childNodes[1];
var attrname = dish.getAttribute("name");
for (j = 0; j<detail[r].childNodes.length;j++){
var info = detail[r].childNodes[j].getAttributeNode('dishname');
if (info != null){
var txt = info.nodeValue;
array.push([mainid,maindetail,txt]);
}
}
}
答案 0 :(得分:2)
试试这个(我无法测试)
for (r = 0; r < detail.length; r++){
var maindetail = detail[r].childNodes[0].getAttribute('name');
var mainid = detail[r].childNodes[0].getAttribute('id');
var dishes=[];
for (j = 1; j<detail[r].childNodes.length;j++){ // start at 1 because 0 should be resdetails
var info = detail[r].childNodes[j].getAttributeNode('dishname');
if (info != null){
dishes.push(info.nodeValue);
}
}
array.push([mainid,maindetail,dishes]);
}
这将返回一个数组,其中每个元素都是mainid,maindetail和所有菜肴的嵌套数组。
编辑:或者如果您不想要嵌套数组,请将array.push
更改为:
array.push([mainid,maindetail].concat(dishes));