2014-09-19 81 views
-1

爲什麼輸出不同於我的代碼數據?錯誤的Javascript多個數組

$(document).ready(function() { 
      var array = []; 
      var innerArray = []; 

      var innerDataArray= []; 

      innerDataArray['a']="a"; 
      innerDataArray['b']="b"; 

      innerArray.push(innerDataArray); 

      innerDataArray['a']="c"; 
      innerDataArray['b']="d"; 

      innerArray.push(innerDataArray); 

      array = innerArray; 

      console.info(array); 

     }); 

數組中的數據是「c」,「d」,「c」,「d」。

爲什麼輸出與我的代碼數據不同?

+4

javascript中的數組作爲引用傳遞,並且您修改相同的'innerDataArray'數組兩次。 – 2014-09-19 09:06:49

回答

1

javascript中的數組作爲參考傳遞,並且您修改相同的innerDataArray數組兩次。

只是這樣做:

$(document).ready(function() { 
    var array = []; 
    var innerArray = []; 

    innerArray.push({"a": "a", "b": "b"}); 
    innerArray.push({"a": "c", "b": "d"}); 

    array = innerArray; 

    console.info(array); 
}); 

或更簡單:

$(document).ready(function() { 
    var array = []; 

    array.push({"a": "a", "b": "b"}); 
    array.push({"a": "c", "b": "d"}); 

    console.info(array); 
}); 

也作爲@TJCrowder說,如果設置在一個數組非數字鍵,它會自動變成普通的對象。

+0

您可能想標記您將數組中的'innerDataArray'更改爲非數組對象。另外,如果你打算在末尾分配'array',那麼用一個你將要扔掉的數組初始化它沒有意義。 – 2014-09-19 09:13:46