站在Freecodecamp

时间:2016-10-05 21:09:47

标签: javascript arrays

我目前通过freecodecamp网站的javascript部分练习,我试图理解为什么一个特定的方法有效解决它。

function nextInLine(arr, item) {
   // Your code here
   arr.push(item);
   var firstItem = arr.shift(arr);
   return firstItem;  // Change this line
}

我试图理解为什么我必须首先创建变量firstItem?还有另一种方法可以解决这个问题吗?如果是这样,请告诉我你是如何解决它的。

3 个答案:

答案 0 :(得分:1)

欢迎使用Stack Overflow:)

作为开展免费代码营前端认证的一部分,我也完成了这项任务。作为参考,这是任务:https://www.freecodecamp.com/challenges/stand-in-line

  

编写一个函数nextInLine,它接受​​一个数组(arr)和一个数字   (item)作为参数。然后将数字添加到数组的末尾   删除数组的第一个元素。然后应该使用nextInLine函数   返回已删除的元素。

虽然您的解决方案可以提供所需的结果,但可以在不声明变量(代码中为firstItem)的情况下解决此任务。我在这里准备并演示了您的描述:http://codepen.io/PiotrBerebecki/pen/xEYbgv

关键是要理解:

  

shift()方法从数组中移除第一个元素 AND 返回   那个元素。此方法更改数组的长度。   https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/shift

function nextInLine(arr, item) {

  // arr is now: [5,6,7,8,9]
  arr.push(item); // add 10 to the and of array
  // arr is now: [5,6,7,8,9,10]

  return arr.shift(); // remove first element of arr (5)
                      // and then return this first element (5),
                      // arr is now [6,7,8,9,10]
}

var testArr = [5,6,7,8,9];

console.log(nextInLine(testArr, 10)); // 5
console.log("After: " + JSON.stringify(testArr)); // After: [6,7,8,9,10]

答案 1 :(得分:0)

return arr.shift(arr);

声明变量返回

答案 2 :(得分:0)

.shift函数不使用任何参数。它只是逐个删除数组的第一个元素 这是正确的代码。

function nextInLine(arr, item) {
  arr.push(item);
  var remove=arr.shift();
}