在学习javascript时,我曾问过以下问题:
在计算机科学中,队列是一种抽象的数据结构,其中的项目按顺序保留。可以在队列的后面添加新项目,而从队列的前面取出旧项目。
编写一个函数nextInLine,该函数以数组(arr)和数字(item)为参数。
将数字添加到数组的末尾,然后删除数组的第一个元素。
nextInLine函数应返回已删除的元素。
以下是我应该运行的以下测试:
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
我基本上应该删除数组中的第一个项目,并将该项目添加到数组的末尾。我正在画一个空白,这是我到目前为止所拥有的:
function nextInLine(arr, item) {
var temp = [];
for(var i = 0; i < arr.length; i++){
if(arr[i] == arr[0]){
temp = arr[i];
arr[i] = arr[i+1];
}
}
return item;
}
// Test Setup
var testArr = [1,2,3,4,5];
// Display Code
console.log("Before: " + JSON.stringify(testArr));
console.log(nextInLine(testArr, 6));
console.log("After: " + JSON.stringify(testArr));
在此示例中,我的输出如下:
Before: [1,2,3,4,5]
6
After: [2,3,3,4,5]
我也尝试过这种方式:
function nextInLine(arr, item) {
// Your code here
arr.push();
arr.pop(arr[0]);
return item;
}
var testArr = [1,2,3,4,5];
console.log("Before: " + JSON.stringify(testArr));
console.log(nextInLine(testArr, 6));
console.log("After: " + JSON.stringify(testArr));
并得到这个:
Before: [1,2,3,4,5]
6
After: [1,2,3,4]
如果有人可以指导我,将不胜感激。
更新
有没有内置方法的方法吗?
答案 0 :(得分:3)
您只需将项目添加到末尾,然后返回第一个元素并将其删除。请注意,pop从数组中删除了最后一个项目,您要删除的第一个方法是shift:
function nextInLine(arr, item) {
arr.push(item);
return arr.shift();
}