Javascript基本算法-队列

时间:2018-06-25 18:11:42

标签: javascript arrays algorithm sorting

在学习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]

如果有人可以指导我,将不胜感激。

更新

有没有内置方法的方法吗?

1 个答案:

答案 0 :(得分:3)

您只需将项目添加到末尾,然后返回第一个元素并将其删除。请注意,pop从数组中删除了最后一个项目,您要删除的第一个方法是shift:

function nextInLine(arr, item) {
    arr.push(item);
    return arr.shift();
}