我有一个嵌套循环。在最内层的循环中,我创建了数组,当控件从内层循环中出来时,我将内层循环中形成的整个数组复制到新数组中。阵列被覆盖
问题是这些值最终被越过了。 我拥有的数据将用于2个外部循环,每个循环将分别具有5个和24个内部循环。
但最终我得到的总数据是来自最后一个循环的数据。
这里是js代码:
$(document).ready(function(){
$.ajax({
url: "Sample.xsd",
dataType: "html",
success: function(data){
var xmlObj = $.parseXML(data);
var buff = $(xmlObj).find("xs\\:complexType");
var xmlObj1 = []; var buff1 = [];
var j = 0;
$(buff).each(function(i){
buff1.splice(0, buff1.length);
$this = $(this);
$this.find("xs\\:element").each(function(index){
buff1[index] = $(this).attr('name');
});
xmlObj1[j] = buff1;
console.log(xmlObj1);
j++;
});
console.log(xmlObj1);
},
error: function(err){
}
});
});
如果你想我可以将XSD文件也是如此。但我认为它很重要。
谢谢。
其实你是对的。当我将buff1数组作为本地数组时,它的工作就像魅力一样。但是,当它不在循环中时,会出现什么问题?究竟发生了什么导致覆盖数组? – 2013-05-08 12:25:49
谢谢强硬.. :) – 2013-05-08 12:26:55
你的拼接方法是你的问题。 Splice最好用于在构建数组后对其进行操作,但在您的场景中,您仍在构建数组,因此拼接不太合适。我还没有彻底测试过它以支持我的说法,这只是我的第一个猜测。当我看到你在做什么(构建一个多维阵列)时,我想,“我每天都这样做!没有必要拼接和推动所有的事情!”因此,我只是简单地按照我自己编写代码的方式重写了代码。 – SpYk3HH 2013-05-08 13:07:03