Javascript函数和数组

Javascript function and Array

本文关键字:数组 函数 Javascript      更新时间:2023-09-26

我试图从数组中剪切一些值,例如我想从它的位置剪切1并返回数组为(3,5,4,6,2,7),但有一个错误说拼接不是一个函数。

function findMin() {
   var arr = arguments;
   arr.splice(1,1);
   return arr[0];
 }
 document.getElementById("demo").innerHTML = findMin(1,3,5,4,6,2,7);

arguments不是数组,它是类数组。您可以像这样以数组的形式获取其内容的副本:

var arr = Array.prototype.slice.call(arguments, 0);

…然后你可以对它使用数组操作

代码的另外两个问题:

  • splice一起使用的索引从0开始,而不是1

  • 返回的是(新)第一个条目,而不是数组

但请注意,对于特定的任务,您不需要执行所有这些操作,您可以直接使用slice;Denys ssamguret告诉你。

下面是一个示例,只是使用slice复制arguments,而不将其与其他代码结合,上面的其他问题也被修复:

function findMin() {
  var arr = Array.prototype.slice.call(arguments, 0);
  arr.splice(0, 1);
  return arr;
}
document.getElementById("demo").innerHTML = findMin(1, 3, 5, 4, 6, 2, 7);
<div id="demo"></div>

问题是arguments不是一个数组,而是一个类似数组的对象。

通常的解决方案是使用slice从类数组对象中获取数组。由于slice的正常用途是从数组中获取切片,这里有一个解决方案,为您提供一个没有第一个元素的arguments副本:

function findMin() {
   return Array.prototype.slice.call(arguments, 1);
}
指出

  1. 操作arguments,甚至使用slice,都会对整个函数的性能产生影响。尽量避免。

  2. 多亏了ES6 (JavaScript背后的下一个迭代标准),在不久的将来,我们将能够使用Array.from而不是slice。