簡體   English   中英

數組被覆蓋

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM