[英]The array is getting overwritten
我有一個嵌套循環。 在最內層的循環中,我正在創建數組,當控件從內層循環中出來時,我會將在內層循環中形成的整個數組復制到新數組中。
問題在於這些值最終都被覆蓋了。 我擁有的數據將用於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文件。 但是我不認為這很重要。
謝謝。
嘗試在將其分配給數組值后將其重新分配為空,然后再開始新的循環。
老實說,我認為您正在努力。 以下應該會給您預期的結果:
$(function() {
$.ajax({
url: "Sample.xsd",
dataType: "html",
success: function(data) {
var xmlObj = $.parseXML(data), xmlObj1 = new Array(),
buff = $(xmlObj).find("xs\\:complexType");
$(buff).each(function(i) {
var buff1 = new Array();
$(this).find("xs\\:element").each(function(ii) {
buff1[ii] = $(this).attr('name');
});
xmlObj1[i] = buff1;
});
console.log(xmlObj1);
},
error: function(err) {
console.log(err);
}
});
})
jsFiddle基於類似的想法。
您可以將buff1
作為$(buff).each
循環的局部變量。
$(document).ready(function(){
$.ajax({
url: "Sample.xsd",
dataType: "html",
success: function(data){
var xmlObj = $.parseXML(data), xmlObj1 = [];
var buff = $(xmlObj).find("xs\\:complexType");
$(buff).each(function(i){
var buff1 = [], $this = $(this);
$this.find("xs\\:element").each(function(index){
buff1.push($(this).attr('name'));
});
xmlObj1.push(buff1)
});
console.log(xmlObj1);
},
error: function(err){
}
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.