如何在javascript中检索数组中的第一项?

如何在javascript中检索数组中的第一项?,javascript,arrays,function,Javascript,Arrays,Function,我是javascript新手。我正在做一项任务,试图从javascript中的数组中删除第一项 方法一 function getFirst(arr, item) { arr.push(item); var removed = arr.shift(); return removed; } 方法二 function getFirst2(arr, item) { arr = arr.push(item); var removed = arr.shift(); retur

我是javascript新手。我正在做一项任务,试图从javascript中的数组中删除第一项

方法一

  function getFirst(arr, item) {
  arr.push(item);
  var removed = arr.shift();
  return removed; 
}
方法二

function getFirst2(arr, item) {
  arr = arr.push(item);
  var removed = arr.shift();
  return removed;
}
我给出了这两种解决方案,但只有方法一被接受,方法二是返回未捕获类型错误的错误方法:arr.shift不是函数()

uncaughttypeerror的确切含义是什么,它表示arr.shift不是一个函数,但它在方法1上工作


任何帮助都将不胜感激!谢谢

由于
arr=arr.push(项)
,您的函数
getFirst2()
无法工作。 这里,
arr
实际上变成了一个数字,因为数组上的push方法返回调用该方法的对象的新长度属性


因此,在数字上调用方法push会抛出类型错误。

您的第一个方法是正确的。但我想指出的是,您不必总是创建一个本地函数作用域变量。
return
语句可以返回计算值。所以不是

 function getFirst(arr, item) {
  arr.push(item);
  var removed = arr.shift();
  return removed; 
}
我会选择

 function getFirst(arr, item) {
  arr.push(item);
  return arr.shift(); 
}

可以对数组应用shift函数。在方法2中,arr不再是数组,因为我认为push方法返回数组的长度。这就是为什么会出现打字错误。
在应用shift方法之前,请尝试打印arr以查看它是什么。

Javascript具有许多内置函数,这些函数附加到不同的数据类型。数组类型具有附加到每个数组但不附加到其他非数组类型的函数
push()、unshift()、shift()
等。 当您在非数组的任何类型上使用这些数组函数时,会出现未捕获类型错误,因为Javascript解释器无法读取该类型的函数。
此行的第二个函数:
arr=arr.push(项目)
,将
arr
的值更改为一个数字,因为函数
arr.push(项目)的返回值是一个数字(Int)。因此,尝试在
arr
上调用
.shift()
不再被允许,因为
arr
不再是数组。

我实际上不理解您的问题。你想达到什么目标<代码>shift()
正在返回第一项。此外,这里的
push()
也没有任何意义。请提供一个更具描述性的问题,或许您应该查看的返回值。您正在将
arr
重新分配给一个不是数组的值,因此
shift()
失败,因为该值不存在。@AlexBykov您好,任务需要编写一个以数组和数字为参数的函数。并将数字添加到数组的末尾,然后删除数组的第一项。函数应返回已删除的项。对不起,我的英语不好。@4谢谢!终于明白我的代码有什么问题了!谢谢下次我会小心返回值是多少!谢谢最后,请理解返回值是整数,这就是为什么向我抛出错误的原因。谢谢!是的,你说得对!您编写的代码更加简洁易懂。非常感谢您的帮助!!