Базовый алгоритм Javascript - QUEUE - PullRequest
0 голосов
/ 25 июня 2018

В моих исследованиях 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]

Если бы кто-то мог направить меня, это было бы очень признательно.

UPDATE

Есть ли способ сделать это без встроенных методов?

1 Ответ

0 голосов
/ 25 июня 2018

Вы можете просто добавить элемент в конец, а затем вернуть первый элемент и удалить его. Обратите внимание, что pop удаляет последний элемент из массива, метод, который вы хотите удалить первым, это shift:

function nextInLine(arr, item) {
    arr.push(item);
    return arr.shift();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...