2017-04-26 123 views
0

嗨我想創建一個數組,其中包含多個數組,每個下一個數組與前一個具有相同的值,加上新的一個。創建二維數組

例:[[1],[1,2],[1,2,3]]

這裏是一個小提琴 - >https://jsfiddle.net/zLd3pqzz/

的問題是,所有的數組都是相同

+1

你想'.slice',不'splice'。 '.splice'不會*返回副本。 –

回答

0

您需要使用Array#slice而不是Array#splice

return innerArr.slice(0) // returns copy of original 
//    ^^^^^ 

var outerArr = [], 
 
    innerArr = []; 
 
    
 
function fillInner(data) { 
 
    innerArr.push(data); 
 
    return innerArr.slice(0) //returns copy of original 
 
} 
 

 
function fillOuter(data) { 
 
    outerArr.push(fillInner(data)); 
 
    console.log(outerArr); 
 
} 
 

 
fillOuter(1); 
 
fillOuter(2); 
 
fillOuter(3);

+0

是的,從我的角度來看,這是一個錯誤,我想要切片不拼接,但是當我打開控制檯並單擊第一個結果上的Array時,它與最後一個相同。我想這應該是這樣,還是我是愚蠢的,我在想什麼不同?因爲這就是我認爲的問題(如果它甚至是一個問題)。 – user1915308

+0

主要問題是,使用拼接不會返回錯誤。在這種情況下,它什麼也不做。 –

+0

是的,我知道,就像我說過我想用切片,但是我錯誤地鍵入了拼接,但結果是一樣的。所以我的問題是,我誤解了什麼或一切正常? – user1915308