嗨我想創建一個數組,其中包含多個數組,每個下一個數組與前一個具有相同的值,加上新的一個。創建二維數組
例:[[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'不會*返回副本。 –