73 lines
4.0 KiB
Markdown
73 lines
4.0 KiB
Markdown
![]() |
---
|
|||
|
title: Stand in Line
|
|||
|
localeTitle: Ficar na fila
|
|||
|
---
|
|||
|
 Lembre-se de usar **`Read-Search-Ask`** se você ficar preso. Tente emparelhar o programa  e escreva seu próprio código 
|
|||
|
|
|||
|
###  Explicação do Problema:
|
|||
|
|
|||
|
Na Ciência da Computação, uma _fila_ é uma **estrutura de dados** abstrata em que os itens são mantidos em ordem. Novos itens podem ser adicionados na parte de trás da **fila** e itens antigos são retirados da frente da **fila** .
|
|||
|
|
|||
|
Escreva uma função `nextInLine` que recebe um array ( **arr** ) e um número ( **item** ) como argumentos. Adicione o número ao final da matriz e remova o primeiro elemento da matriz. A função `nextInLine` deve então retornar o elemento que foi removido.
|
|||
|
|
|||
|
* Altere o código abaixo `//Your Code here` e até `//Change this line` .
|
|||
|
* Verifique se você está editando o interior da função `nextInLine` .
|
|||
|
* Use uma função de matriz que você aprendeu a adicionar o **item** ao final da matriz **arr** .
|
|||
|
* Use uma função de matriz que você aprendeu a remover o primeiro elemento da matriz **arr** .
|
|||
|
* Retorna o elemento removido.
|
|||
|
|
|||
|
#### Links Relevantes
|
|||
|
|
|||
|
* [Desafio: manipular matrizes com push ()](http://www.freecodecamp.com/challenges/manipulate-arrays-with-push)
|
|||
|
* [Desafio: Manipular Arrays Com Shift ()](http://www.freecodecamp.com/challenges/manipulate-arrays-with-shift)
|
|||
|
* [Desafio: passando valores para funções com argumentos](http://www.freecodecamp.com/challenges/passing-values-to-functions-with-arguments)
|
|||
|
|
|||
|
##  Sugestão: 1
|
|||
|
|
|||
|
O método `push()` adiciona um item ao final de um array.
|
|||
|
|
|||
|
> _tente resolver o problema agora_
|
|||
|
|
|||
|
##  Dica: 2
|
|||
|
|
|||
|
O método `shift()` remove o primeiro elemento de uma matriz. Também retorna o elemento removido.
|
|||
|
|
|||
|
> _tente resolver o problema agora_
|
|||
|
|
|||
|
##  Dica: 3
|
|||
|
|
|||
|
A função `nextInLine` usa **arr** e **item** . Esses são os testes que serão usados para transmitir os elementos da matriz com os quais eles testarão. Permite que a função seja reutilizável. Não codifique qualquer um dos testes dentro da função.
|
|||
|
|
|||
|
> _tente resolver o problema agora_
|
|||
|
|
|||
|
## Alerta de Spoiler!
|
|||
|
|
|||
|

|
|||
|
|
|||
|
**Solução à frente!**
|
|||
|
|
|||
|
##  Solução básica de código:
|
|||
|
```
|
|||
|
function nextInLine(arr, item) {
|
|||
|
// Your code here
|
|||
|
arr.push(item);
|
|||
|
var removed = arr.shift();
|
|||
|
return removed; // Change this line
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
### Explicação do código:
|
|||
|
|
|||
|
* Empurrar **item** no final do **arr** .
|
|||
|
* Chame o método `shift()` na **arr** para obter o primeiro item e armazene-o em **removido** .
|
|||
|
* Retornar **removido** .
|
|||
|
|
|||
|
**Exemplo de Execução**
|
|||
|
|
|||
|
* Teste `nextInLine([2,1]);` corre.
|
|||
|
* A função `nextInLine` é chamada. **arr** se torna \[2\]. **item** se torna 1.
|
|||
|
* `arr.push(item);` Empurra de 1 a \[2\]. Então **arr** é agora \[2,1\].
|
|||
|
* `var removed = arr.shift();` remove o primeiro elemento. Então **arr** é agora \[1\]. 2 foi removido e é armazenado em **removido** .
|
|||
|
* `return removed;` 2 é retornado.
|
|||
|
|
|||
|
**_Nota_** : Você não precisa realmente da variável **removida** . O elemento removido pode ser retornado diretamente usando o `return arr.shift();` .
|