2017-04-26 255 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