2016-11-10 12 views
-1

シンプルなことを雄弁にした運動。スライスは、それが呼び出された配列を変化させませんslice dosent work in function 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); 
}