Trilhas
/
JavaScript
JavaScript
/
Exercícios
/
Os encantamentos de Elyse
Os encantamentos de Elyse

Os encantamentos de Elyse

Exercício de aprendizagem

Introdução

Em JavaScript, um array, ou vetor, é uma estrutura parecida com uma lista, sem comprimento fixo, que pode armazenar qualquer tipo de primitivo ou objeto, até mesmo tipos misturados.

Para criar um array, coloque os elementos entre colchetes []. Para ler um array, coloque o índice entre colchetes [] depois do identificador. Os índices de um array começam em zero.

Por exemplo:

const numbers = [1, 'two', 3, 'four'];
numbers[2];
// => 3

Para descobrir quantos elementos há em um array, use a propriedade length:

const numbers = [1, 'two', 3, 'four'];
numbers.length;
// => 4

Para alterar um elemento do array, atribua um valor ao índice:

const numbers = [1, 'two', 3, 'four'];
numbers[0] = 'one';
numbers;
// => ['one', 'two', 3, 'four']

Métodos

Alguns dos métodos disponíveis em todo objeto Array podem ser usados para adicionar ou remover elementos do array. Aqui estão alguns para considerar ao fazer este exercício:

push

Um value pode ser adicionado ao final de um array usando .push(value). O método retorna o novo comprimento do array.

const numbers = [1, 'two', 3, 'four'];
numbers.push(5); // => 5
numbers;
// => [1, 'two', 3, 'four', 5]

pop

O último value pode ser removido de um array usando .pop() O método retorna o valor removido. O comprimento do array vai diminuir por causa dessa mudança.

const numbers = [1, 'two', 3, 'four'];
numbers.pop(); // => four
numbers;
// => [1, 'two', 3]

shift

O primeiro value pode ser removido de um array usando .shift() O método retorna o valor removido. O comprimento do array vai diminuir por causa dessa mudança.

const numbers = [1, 'two', 3, 'four'];
numbers.shift(); // => 1
numbers;
// => ['two', 3, 'four']

unshift

Um value pode ser adicionado ao início de um array usando .unshift(value). O método retorna o novo comprimento do array.

const numbers = [1, 'two', 3, 'four'];
numbers.unshift('one'); // => 5
numbers;
// => ['one', 1, 'two', 3, 'four']

splice

Um value em um index específico pode ser removido de um array usando .splice(index, 1). O método retorna o(s) elemento(s) removido(s).

const numbers = [1, 'two', 3, 'four'];
numbers.splice(2, 1, 'one'); // => [3]
numbers;
// => [1, 'two', 'one', 'four']
Advanced

Esses métodos são mais poderosos do que o descrito aqui:

  • Tanto push quanto unshift permitem adicionar ou inserir vários valores de uma vez, passando mais argumentos. Isso não é necessário para completar este exercício.
  • O splice pode remover vários valores aumentando o segundo argumento. Isso não é necessário para completar este exercício.
  • O splice também pode adicionar vários valores, passando-os como argumentos depois do deleteCount. Isso pode ser usado para substituir valores, ou inserir valores no meio de um array (por exemplo, removendo 0 elementos). Isso não é necessário para completar este exercício.

Instruções

Como aspirante a mágica, Elyse precisa praticar alguns fundamentos. Ela tem uma pilha de cartas que quer manipular.

Para facilitar um pouco as coisas, ela usa apenas as cartas de 1 a 10, então a pilha de cartas dela pode ser representada por um array de números. A posição de uma carta corresponde ao índice no array. Isso significa que a posição 0 se refere à primeira carta, a posição 1 à segunda carta, e assim por diante.

Note

Todas as funções, exceto duas, devem atualizar o array de cartas e depois retornar o array modificado. Essa é uma forma comum de trabalhar conhecida como padrão Builder, que permite encadear funções uma na outra de forma elegante.

As duas exceções são getItem, que deve retornar a carta na posição dada, e checkSizeOfStack, que deve retornar true se o tamanho dado corresponder.

1. Recuperar uma carta de uma pilha

Para pegar uma carta, retorne a carta no índice position da pilha dada.

const position = 2;
getItem([1, 2, 4, 1], position);
// => 4

2. Trocar uma carta na pilha

Faça um pouco de prestidigitação e troque a carta no índice position pela carta de substituição fornecida. Retorne a pilha ajustada.

const position = 2;
const replacementCard = 6;
setItem([1, 2, 4, 1], position, replacementCard);
// => [1, 2, 6, 1]

3. Inserir uma carta no topo da pilha

Faça uma carta aparecer inserindo uma nova carta no topo da pilha. Retorne a pilha ajustada.

const newCard = 8;
insertItemAtTop([5, 9, 7, 1], newCard);
// => [5, 9, 7, 1, 8]

4. Remover uma carta da pilha

Faça uma carta desaparecer removendo a carta na position dada da pilha. Retorne a pilha ajustada.

const position = 2;
removeItem([3, 2, 6, 4, 8], position);
// => [3, 2, 4, 8]

5. Remover a carta do topo da pilha

Faça uma carta desaparecer removendo a carta do topo da pilha. Retorne a pilha ajustada.

removeItemFromTop([3, 2, 6, 4, 8]);
// => [3, 2, 6, 4]

6. Inserir uma carta na base da pilha

Faça uma carta aparecer inserindo uma nova carta na base da pilha. Retorne a pilha ajustada.

const newCard = 8;
insertItemAtBottom([5, 9, 7, 1], newCard);
// => [8, 5, 9, 7, 1]

7. Remover uma carta da base da pilha

Faça uma carta desaparecer removendo a carta da base da pilha. Retorne a pilha ajustada.

removeItemAtBottom([8, 5, 9, 7, 1]);
// => [5, 9, 7, 1]

8. Verificar o tamanho da pilha

Verifique se o tamanho da pilha é igual a stackSize ou não.

const stackSize = 4;
checkSizeOfStack([3, 2, 6, 4, 8], stackSize);
// => false
Editar via GitHub O link abre em uma nova janela ou aba
JavaScript Exercism

Tudo pronto para começar Os encantamentos de Elyse?

Crie sua conta no Exercism para aprender e dominar JavaScript com 37 conceitos159 exercícios e mentoria humana de verdade, tudo de graça.