Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript Array.prototype.splice()用法_Javascript_Arrays - Fatal编程技术网

JavaScript Array.prototype.splice()用法

JavaScript Array.prototype.splice()用法,javascript,arrays,Javascript,Arrays,我试图编写一个函数,根据输入从数组中删除一定数量的元素。正如您在下面的代码中看到的,我选择拼接数组以返回一个新数组。我在一家报纸上读到这件事 以下是我现在掌握的代码: function slasher(arr, howMany) { var newArray = arr.splice(0, howMany); return newArray; } slasher([1, 2, 3], 2); 但是,控制台在测试[1,2]时提供了输出 根据我在Mozilla上阅读的文档,我期望得

我试图编写一个函数,根据输入从数组中删除一定数量的元素。正如您在下面的代码中看到的,我选择拼接数组以返回一个新数组。我在一家报纸上读到这件事

以下是我现在掌握的代码:

function slasher(arr, howMany) {


  var newArray = arr.splice(0, howMany);

  return newArray;
}

slasher([1, 2, 3], 2);
但是,控制台在测试[1,2]时提供了输出

根据我在Mozilla上阅读的文档,我期望得到[3]的输出


更新:在阅读了这些评论之后,我意识到我误解了splice()的实际功能

splice
将返回从数组中删除的元素,而原始数组将被修改。

阅读注释后,我意识到我的错误。如果将输出返回请求更改为

return arr;
代码运行得很好

完整的工作代码为:

function slasher(arr, howMany) {


  var newArray = arr.splice(0, howMany);

  return arr;
}

要实现预期的输出,您必须稍微修改代码

.splice()
函数返回您可以读取的已删除元素

要获得预期的行为,请按如下方式修改代码:

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

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

“根据我在Mozilla上读到的文档,我期望得到[3]的输出。”再次查看文档。它清楚地说明了
.splice
的作用和返回的内容:“返回值:一个包含已删除元素的数组。”您删除了
1
2
,因此将
[1,2]
作为返回值。您在哪里读到它返回一个包含保留元素的新数组?返回原始数组
返回arr
var newArray=
不是必需的。@FelixKling谢谢,我确实阅读了文档,但我误解了。他们举了一个例子,让我觉得我所期待的会发生。当我更改代码以返回arr时;成功了。谢谢。请记住,
.splice()
返回它删除的内容,但会更改原始数组。如果不想影响原始数组,请使用
.slice()
,尽管它采用索引而不是计数
.slice()
只返回切片。请记住,您返回的是原始数组,而不是新数组。不需要新的变量声明。你可以在我的解决方案中看到的作为参数的数组上工作。当我删除新的变量时,它不再正常工作。我现在意识到了这一点。文档的措辞让我误读了一个例子中发生的事情。