簡體   English   中英

奇怪的jQuery多類型鋸齒狀數組

[英]jquery multitype Jagged array behaving strangely

請參考此:

http://jsfiddle.net/MasterOfKitties/v7xbu/7/

/*This is the desired behavior*/
/*var A = [1, 2, 3]*/
/*var B = "hello", [1, 2, 3],
         "hello", [2, 3, 2],
         "hello", [1, 5, 1]]*/

var A = new Array();
var B = new Array();

function fnMakeArray()
    {
     var strTemp;
     var arrTemp = new Array();
     strTemp = parseInt(window.prompt("Enter a number until you hit cancel",""));  


  while (strTemp>0)
      {
         arrTemp.push(strTemp);   
         strTemp =  parseInt(window.prompt("Enter a number until you hit cancel",""));
      }  
        A[0] = "hello";
        A[1] = arrTemp;
        alert(A);
    }


function fnReplicateArray()
    {
        B.push(A); 
        fnDisBArray();
        alert(B);

    }

function fnDisBArray()
{
    var strTemp;
 for(var x = 0; x<B.length;x++)
     {
         strTemp += "<P>" + B[x] + "</p>"

     }
     document.getElementById('parse').innerHTML = strTemp ;  


}

由於某些原因,當試圖顯示B數組時,它輸出的是undefined。 此外,即使b [1]或b [2]元素被排列,b [0]元素也開始發生根本變化,似乎並不能正確地增加鋸齒狀數組。

有什么幫助嗎? 這是怎么回事?

您必須使用值初始化strTemp

喜歡

var strTemp = "";

代替

var strTemp;

在你的情況下。

當行

 strTemp += "<P>" + B[x] + "</p>"

在第一次執行strTemp undefined因此將其轉換為undefined並被附加到開頭

看到工作的小提琴

您的函數不會“復制” /復制A數組,它只是將對A的引用推入B。我相信您想要:

B = A.slice(0); 

現在,您似乎還遇到了另一個問題:如果在提示中輸入例如10和11,則會在末尾得到以下數組:

[
    "hello",
    [
        10,
        11
    ]
]

我懷疑這不是您真正想要的。 您能解釋一下您真正要完成的工作嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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