2016-11-10 89 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); 
}