javascript拼接方法和返回混淆

时间:2017-11-09 06:37:33

标签: javascript return splice

所以我试图从数组的开头创建一个javascript函数来删除n元素,以下是代码:



function slasher(arr, howMany) {
  arr.splice(0, howMany);
  return arr;
}

slasher([1, 2, 3], 2);




问题:
有人可以向我解释为什么当我将函数内的代码更改为一行return arr.splice(0, howMany);时,该函数会给我[1, 2]而不是[3]

谢谢!

4 个答案:

答案 0 :(得分:1)

来自拼接的docs

返回

  

包含已删除元素的数组。如果仅删除一个元素,则返回一个元素的数组。如果没有删除任何元素,则返回一个空数组。

因此,您实际上是获取已删除的元素数组而不是实际数组。

答案 1 :(得分:1)

因为splice返回删除的元素,但没有删除元素的数组。

var arr =[1,2,3]
var elementsRemoved = arr.splice(0,2);

elementsRemoved = [1,2] and arr would be [3].

答案 2 :(得分:1)

function slasher (arr, howMany){
  return arr.splice(howMany, arr.length)
}

console.log(slasher([0,1,2,3,4],2))

splice语法是splice(索引,要从该索引中删除的elemnets的数量)

function slasher (arr, howMany){
  return arr.slice(howMany, arr.length)
}

console.log(slasher([0,1,2,3,4],3))

答案 3 :(得分:0)

因为splice()返回值并同时更改数组。

所以当你return arr.splice()时 - 你正在返回返回此功能的内容,但当你return arr时 - 你正在返回你的新数组。