2018-09-30 23:01:58 +01:00
---
id: 56533eb9ac21ba0edf2244c6
title: Stand in Line
challengeType: 1
2019-02-14 12:24:02 -05:00
videoUrl: 'https://scrimba.com/c/ca8Q8tP'
2019-07-31 11:32:23 -07:00
forumTopicId: 18307
2018-09-30 23:01:58 +01:00
---
## Description
< section id = 'description' >
2019-03-04 07:12:29 -08:00
In Computer Science a < dfn > queue< / dfn > is an abstract < dfn > Data Structure< / dfn > where items are kept in order. New items can be added at the back of the queue and old items are taken off from the front of the queue.
2018-09-30 23:01:58 +01:00
Write a function < code > nextInLine< / code > which takes an array (< code > arr< / code > ) and a number (< code > item< / code > ) as arguments.
Add the number to the end of the array, then remove the first element of the array.
The < code > nextInLine< / code > function should then return the element that was removed.
< / section >
## Instructions
< section id = 'instructions' >
< / section >
## Tests
< section id = 'tests' >
```yml
2018-10-04 14:37:37 +01:00
tests:
2018-10-20 21:02:47 +03:00
- text: < code > nextInLine([], 5)</ code > should return a number.
2019-07-13 00:07:53 -07:00
testString: assert.isNumber(nextInLine([],5));
2018-10-20 21:02:47 +03:00
- text: < code > nextInLine([], 1)</ code > should return < code > 1</ code >
2019-07-13 00:07:53 -07:00
testString: assert(nextInLine([],1) === 1);
2018-10-20 21:02:47 +03:00
- text: < code > nextInLine([2], 1)</ code > should return < code > 2</ code >
2019-07-13 00:07:53 -07:00
testString: assert(nextInLine([2],1) === 2);
2018-10-20 21:02:47 +03:00
- text: < code > nextInLine([5,6,7,8,9], 1)</ code > should return < code > 5</ code >
2019-07-13 00:07:53 -07:00
testString: assert(nextInLine([5,6,7,8,9],1) === 5);
2018-10-20 21:02:47 +03:00
- text: After < code > nextInLine(testArr, 10)</ code > , < code > testArr[4]</ code > should be < code > 10</ code >
2019-07-13 00:07:53 -07:00
testString: nextInLine(testArr, 10); assert(testArr[4] === 10);
2018-09-30 23:01:58 +01:00
```
< / section >
## Challenge Seed
< section id = 'challengeSeed' >
< div id = 'js-seed' >
```js
function nextInLine(arr, item) {
2020-03-02 23:18:30 -08:00
// Only change code below this line
return item;
// Only change code above this line
2018-10-08 01:01:53 +01:00
2018-09-30 23:01:58 +01:00
}
2020-03-02 23:18:30 -08:00
// Setup
2018-09-30 23:01:58 +01:00
var testArr = [1,2,3,4,5];
2020-03-02 23:18:30 -08:00
// Display code
2018-09-30 23:01:58 +01:00
console.log("Before: " + JSON.stringify(testArr));
2020-03-02 23:18:30 -08:00
console.log(nextInLine(testArr, 6));
2018-09-30 23:01:58 +01:00
console.log("After: " + JSON.stringify(testArr));
```
< / div >
### Before Test
< div id = 'js-setup' >
```js
var logOutput = [];
var originalConsole = console
function capture() {
var nativeLog = console.log;
console.log = function (message) {
logOutput.push(message);
if(nativeLog.apply) {
nativeLog.apply(originalConsole, arguments);
} else {
var nativeMsg = Array.prototype.slice.apply(arguments).join(' ');
nativeLog(nativeMsg);
}
};
}
function uncapture() {
console.log = originalConsole.log;
}
capture();
```
< / div >
### After Test
< div id = 'js-teardown' >
```js
2018-10-20 21:02:47 +03:00
uncapture();
testArr = [1,2,3,4,5];
(function() { return logOutput.join("\n");})();
2018-09-30 23:01:58 +01:00
```
< / div >
< / section >
## Solution
< section id = 'solution' >
```js
var testArr = [ 1,2,3,4,5];
function nextInLine(arr, item) {
arr.push(item);
return arr.shift();
}
```
< / section >