A resposta é:
function nextInLine(arr, item) {
// Only change code below this line
arr.push(item);
const removed = arr.shift();
return removed;
return item;
// Only change code above this line
}
Apesar de ter "funcionado", eu não diria que está totalmente certo. Isso porque a função tem dois return
, o que não faz sentido. Quando ela encontra o primeiro return
, ela já retorna o valor e encerra a execução, então o segundo return
nunca será executado (o problema é que JS é bem permissivo com algumas coisas e não dá erro nesse caso).
Enfim, já te passaram os links da documentação (aqui e aqui). Mas pra resumir, push
adiciona um elemento no final do array, e shift
remove o primeiro elemento e o retorna. Por exemplo:
let array = [1, 2, 3, 4, 5];
array.push(6); // adiciona o 6 no final
console.log(array); // [ 1, 2, 3, 4, 5, 6 ]
let primeiro = array.shift(); // remove o primeiro elemento
console.log(primeiro); // 1
console.log(array); // [ 2, 3, 4, 5, 6 ]
Sendo assim, o exercício pede que um elemento seja adicionado no final, e depois que o primeiro seja removido e retornado. Então poderia ser apenas:
function nextInLine(arr, item) {
arr.push(item);
return arr.shift();
}
E só. Como shift
remove o primeiro elemento e o retorna, eu posso retornar este valor diretamente, sem precisar de variáveis intermediárias.
Testando:
function nextInLine(arr, item) {
arr.push(item);
return arr.shift();
}
let array = [1, 2, 3, 4, 5];
// adiciona o 6 no final e remove o primeiro elemento
let primeiro = nextInLine(array, 6);
console.log(primeiro); // 1
console.log(array); // [ 2, 3, 4, 5, 6 ]