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

时间:2016-11-19 07:39:19

标签: 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();
  return removed;
}

我提出了这两个解决方案,但只接受方法一,方法二是错误的返回Uncaught TypeError:arr.shift不是函数()。

Uncaught TypeError的含义是什么,以及arr.shift不是函数但是它适用于方法一的状态是什么?

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

4 个答案:

答案 0 :(得分:0)

由于getFirst2(),您的功能arr = arr.push(item)无效。 这里arr实际上变成了一个数字,因为数组上的push方法返回the new length property of the object upon which the method was called

因此调用方法推送数字会引发TypeError。

答案 1 :(得分:0)

你的第一种方法没问题。但我要指出,您并不总是需要创建本地的fumpntion-scope变量。您的return语句可以返回计算值。而不是

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

我会去

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

答案 2 :(得分:0)

您可以在数组上应用shift函数。在方法2中,arr不再是一个数组,因为我认为push方法返回数组的长度。这就是你得到一个typeError的原因。 在应用shift方法之前尝试打印arr以查看它是什么。

答案 3 :(得分:0)

Javascript有许多内置函数,它们附加到不同的数据类型。 Array类型具有附加到每个数组但不附加到其他非数组类型的函数push(), unshift(), shift()等。 当您在任何不是数组的类型上使用这些Array函数时,您会收到Uncaught类型错误,因为Javascript解释器无法读取该类型的函数。

此行上的第二个函数:arr = arr.push(item);,将arr的值更改为数字,因为函数arr.push(item);的返回值是一个数字(Int) 。因此,不再允许尝试在.shift()上调用arr,因为arr不再是数组。