Executando verificação de segurança...
1

Duvida em Push e Shift

Gente, boa tarde
Podem por favor me ajduar numa duvida ?

A questão é:
Escreva uma função nextInLineque receba 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 nextInLinefunção deve então retornar o elemento que foi removido.

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
}

// Setup
let 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));

Adicionei o arr.push e arr.shift e deu certo
mas eu fiz e não entendi o porque funcionou kkkk
Podem me ajudar por favor ?

Carregando publicação patrocinada...
2

chegou a buscar a documentação para entender o que o método faz?

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift

dica: para formatar seu código, use 4 ` acima e abaixo do código, ai fica assim:

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
}

// Setup
let 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));
1

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 ]