我目前正在 FreeCodeCamp 上尝试 JavaScript 挑战。几天来,我一直在努力应对这一挑战,但感到很困惑。我在该网站的论坛上寻求帮助,但得到的回复不是很有帮助或有用。
对于这个特殊的挑战,我必须“编写一个函数 nextInLine,它将一个数组 (arr) 和一个数字 (item) 作为参数。将数字添加到数组的末尾,然后删除数组的第一个元素。该nextInLine 函数应该返回被删除的元素。”
这是我目前的代码:
function nextInLine(arr, item) {
// Your code here
var nextInLine = ([], 1);
/*var addToNextInLine = nextInLine.push();
var removedFromNextInLine = nextInLine.shift();*/
return nextInLine;
}
// Test Setup
var testArr = [1,2,3,4,5];
// Display Code
console.log("Before: " + JSON.stringify(testArr));
console.log(nextInLine([], 1)); // Modify this line to test
console.log("After: " + JSON.stringify(testArr));
为了成功完成这个挑战,我必须满足以下条件:
nextInLine([], 1) 应该返回 1
nextInLine([2], 1) 应该返回 2
nextInLine([5,6,7,8,9], 1) 应该返回 5
在nextInLine(testArr, 10)之后,testArr[4]应该是10
我成功完成了第一个要求,但仍无法弄清楚如何完成最后三个要求。因为我被要求从数组中“添加”和“删除”元素,所以我认为这意味着成功完成此练习需要 push 和 shift 函数。
但是当我测试我的代码时,我收到一条 TypeError 消息,内容为“nextInLine.push 不是一个函数”。在我看来,要么我错误地编写了 push 和 shift 函数的代码,要么这些函数可能不是完成这个挑战所必需的。因此,话虽这么说,我想问大家的问题是,我是否在代码中写错了一些东西,我应该从我的代码中删除一些东西,还是我遗漏了其他东西?
如果您想了解任何其他信息以便更好地理解我的问题,请告诉我。
最佳答案
作为一个也参加过 Free Code Camp 的人,我同意上面评论者的观点,你可以在类(class)中学到的最重要的事情是如何研究和如何提出问题。因此,我不会为您提供工作片段。不过,我会指出您的代码中的一些具体问题,这应该会为您指明正确的方向。
您的代码中存在一些语法问题,并且对如何处理 push
和 shift
存在误解。
首先,语法。
var nextInLine = ([], 1);
此行将 ([], 1)
的值赋给 nextInLine
。 ([], 1)
不是我所知道的任何 javascript 数据结构。如您的问题的评论中所述,它只返回 1
。
因为 push
和 shift
是 Array
对象上的方法,所以 nextInLine
应该是一个 Array
,给我们留下:
var nextInLine = []
接下来,考虑shift
方法的return
值,来自MDN :
[The return value is ] the removed element from the array; undefined if the array is empty.
所以您应该返回的是调用 shift()
返回的值。
最后,push()
需要您希望它push
到array
的值,您目前没有提供。
关于javascript - 在 JavaScript 中创建数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41556715/