2016-07-26 53 views
0

我編寫的東西使用JavaScript數組,但我面臨一個小問題。Javascript二維數組奇怪的行爲

我正在運行爲'蛇'創建的'init'函數,但輸出對我來說有點奇怪。我敢肯定,這是因爲我是javascript新手。有人可以向我解釋發生了什麼嗎?我怎樣才能讓代碼生成所需的輸出?

var snake = { 
    direction : null, 
    head : null, 
    queue : null, 

    init: function(){ 
     this.direction = RIGHT; 
     this.queue = []; // 2D ARRAY 
     this.head = []; // 1D ARRAY 

     this.insert([1,10]); 
     this.insert([2,20]); 
     this.insert([3,30]); 
    }, 

    insert: function(x,y){ 
     this.queue.unshift([x,y]); // INSERTS [X,Y] 
     this.head = this.queue[0]; 

     console.log(this.head + "T0"); // prints: 1,10 T0 
     console.log(this.head[0] + " T1 "); // prints: 1,10 T1 
     console.log(this.head[1] + " T2 "); // prints: undefined T2 

     /* 
      I was expecting (DESIRED OUTPUT): 

      this.head to print 1,1 

      this.head[0] to print 1 

      this.head[1] to print 10 

     */ 

    } 

回答

2

你的功能insert有兩個參數;一個用作數組中的第一個值,另一個用作數組中的第二個值,以不移至queue。當調用該函數時,只傳遞一個參數(數組[1,10]),該參數在非移位時可以用作第一個元素,第二個元素將是未定義的。

要解決您的問題,請使用this.insert(1,10);調用您的函數,或更改函數只接受一個參數,然後this.queue.unshift(x);

+0

哦,我明白了。我錯誤地調用了函數。感謝您的幫助。 –