我有一個嵌套循環。在最內層的循環中,我創建了數組,當控件從內層循環中出來時,我將內層循環中形成的整個數組複製到新數組中。陣列被覆蓋
問題是這些值最終被越過了。 我擁有的數據將用於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