javascript - Javascript 基本算法 - QUEUE
问题描述
在我学习 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]
如果有人可以指导我,将不胜感激。
更新
如果没有内置方法,有没有办法做到这一点?
解决方案
您可以将项目添加到末尾,然后返回第一个元素并将其删除。请注意,pop 从数组中删除最后一项,您要删除第一项的方法是 shift:
function nextInLine(arr, item) {
arr.push(item);
return arr.shift();
}
推荐阅读
- javascript - 如何获取上一个日期期间
- android - Android sourceSets 有没有办法使用嵌套风味结构?
- leaflet - 搜索特定名称 onEachFeature
- python - for 循环中的 if 语句打印两次
- html - 使用 Universal SSR 使用 angular2+ 指令播放视频 html
- sql - SQL 表底部的 NULL 值 - SQL Server 2000
- java - 转换地图的最佳方法
- tfs - 发布分支可以用于暂存吗?
- c# - 如何在控制器之外获取 Request.Scheme 属性。.(净核 2.2)
- geotiff - 无法使用光栅获得单波段 tiff 图像的彩色图