【发布时间】:2019-07-18 02:53:41
【问题描述】:
我正在处理有关 FreeCodeCamp 的问题。我需要在数组末尾添加一个数字,然后删除数组的第一个元素。名为 nextInLine 的函数应该返回从中删除的元素。
我不是全新的,但我在 JS 方面也不是很先进。但是,我是算法新手。我看过 Youtube 视频以寻求队列方面的帮助。我对这个概念的理解如下:
//array as queue (FIFO)
const arr = [];
arr.push(5); // [5]
arr.push(7); // [5,7]
arr.push(9); // [5,7,9]
console.log(arr.shift()); // [7,9]
console.log(arr.shift()); // [9]
console.log(arr.shift()); // []
然而,当我试图在我的代码中实现这个想法时,我似乎没有完全理解提出的问题以使其运行。我要修改函数 nextInLine,以及说//显示代码的注释,我也要更改该行。
function nextInLine(arr, item) {
// Your code here
arr.push(arr[0]);
arr.shift();
return console.log(arr, item); // Change this line
}
// Test Setup
var testArr = [1,2,3,4,5];
// Display Code
console.log("Before: " + JSON.stringify(testArr));
console.log(nextInLine(testArr)); // Modify this line to test
console.log("After: " + JSON.stringify(testArr));
运行代码时,这就是我所看到的。
nextInLine([], 5) should return a number.
nextInLine([], 1) should return 1
nextInLine([2], 1) should return 2
nextInLine([5,6,7,8,9], 1) should return 5
After nextInLine(testArr, 10), testArr[4] should be 10
我的函数正在输出 /* 2,3,4,5,1 */ 但它似乎不正确。也许我没有将它放入数组中?我在开头有第一个数字 (1),但是我没有简单地将我的答案放在一个数组中吗?或者我什至没有给出正确的数字?
【问题讨论】:
标签: javascript arrays algorithm