嗨我想创建一个数组,其中包含多个数组,每个下一个数组与前一个具有相同的值,加上新的一个。创建二维数组
例:[[1],[1,2],[1,2,3]]
这里是一个小提琴 - >https://jsfiddle.net/zLd3pqzz/
的问题是,所有的数组都是相同
嗨我想创建一个数组,其中包含多个数组,每个下一个数组与前一个具有相同的值,加上新的一个。创建二维数组
例:[[1],[1,2],[1,2,3]]
这里是一个小提琴 - >https://jsfiddle.net/zLd3pqzz/
的问题是,所有的数组都是相同
您需要使用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);
是的,从我的角度来看,这是一个错误,我想要切片不拼接,但是当我打开控制台并单击第一个结果上的Array时,它与最后一个相同。我想这应该是这样,还是我是愚蠢的,我在想什么不同?因为这就是我认为的问题(如果它甚至是一个问题)。 – user1915308
主要问题是,使用拼接不会返回错误。在这种情况下,它什么也不做。 –
是的,我知道,就像我说过我想用切片,但是我错误地键入了拼接,但结果是一样的。所以我的问题是,我误解了什么或一切正常? – user1915308
你想'.slice',不'splice'。 '.splice'不会*返回副本。 –