2016-11-10 73 views
-1

簡單的事情做eloquentJS練習。切片不函數參數返回從陣列右輸出切片dosent工作在功能js

console.log(swapArray([1, 2, 3, 4, 5, 6, 7])); 

function swapArray(insertTab) { 
    console.log([0, 1, 2, 3, 4].slice(2, 4)); // this work fine 
    insertTab.slice(2, 4); // this does nothing 
    return insertTab; 
} 
+4

'insertTab的= insertTab.slice(2,4)的一部分;' –

+0

感謝的人!太客氣了。覺得現在很愚蠢-_- –

回答

2

Array.prototype.slice()不發生變異它被稱爲對數組,而是返回一個新的數組。這個返回值分配給insertTab並能正常工作:

console.log(swapArray([1, 2, 3, 4, 5, 6, 7])); 
 

 
function swapArray(insertTab) { 
 
    console.log([0, 1, 2, 3, 4].slice(2, 4)); 
 
    insertTab = insertTab.slice(2, 4); 
 
    return insertTab; 
 
}

1
console.log(swapArray([1,2,3,4,5,6,7]));  
function swapArray(insertTab){ 
    console.log([0, 1, 2, 3, 4].slice(2, 4)); 
    insertTab = insertTab.slice(2, 4); 
    return insertTab; 
} 

DEMO

1

好吧,如果你讀了documentation它規定

slice()方法返回的一部分的淺表副本一個數組放入從開始到結束選擇的新數組對象中(末尾不包含)。 原始數組將不會被修改

所以,你的情況,只是返回你想要直接

function swapArray(insertTab) { 
    console.log([0, 1, 2, 3, 4].slice(2, 4)); // this work fine 
    return insertTab.slice(2, 4); 
}