Shape Up pt-br Explainer

Explicação de Dar forma

Objetivo do desafio: Use .length - 1 para alterar o último valor em uma array.

Passo a passo da solução: Usar .length em uma array retornará o número de itens da array. Por exemplo:


let animals = ['dogs', 'cats', 'frogs', 'turtles'];

console.log(animals.length);

O console.log() imprimirá 4, já que há 4 itens na array animals.

Como as arrays são indexadas a partir de 0, o índice do último item de uma array será sempre 1 a menos do que o comprimento da array. Para acessar o último item diretamente, podemos usar .length -1.

Por exemplo:


let doughnuts = [jelly, glazed];

let lastItem = doughnuts.length - 1

doughnuts tem um comprimento de 2 e o índice do último item 'glazed' é 1.


let cookies = ['chocolate chip', 'oatmeal raisin', 'snickerdoodle'];

let lastItem = cookies.length - 1

cookies tem um comprimento de 3 e o último item 'snickerdoodle' está no índice 2.

Neste desafio, a função setLastValue precisará pegar uma array e uma string e substituir o último item da array pela string.

Para começar, adicione 2 parâmetros à função, tocando no sublinhado entre parênteses () e trazendo o teclado à tona. Dê nomes aos parâmetros como values e newLastValue.

Dentro das {} do bloco de código da função, crie uma variável para armazenar o último índice da array:


let lastIndex = values.length - 1;

Na linha seguinte, use a variável para definir o último item da array com o novo valor:


values[lastIndex] = newLastValue;

Por último, chame a função no final do código para substituir o último item em shapes por 'hexagon'

Solução do código de exemplo:


import { shapes } from 'grasshopper.shapes';

function setLastValue(values, newLastValue) {

let lastIndex = values.length - 1;

values[lastIndex] = newLastValue;

}

setLastValue(shapes,'hexagon');

for (let item of shapes) {

console.log(item);

}

Conceitos de JavaScript: Arrays, .length, Importações, Funções, Console

Código Adicional (código oculto executado antes do código do desafio):


let shapes = ['triangle','square','pentagon','circle'];

7 Likes

A solução não está funcionando

2 Likes

oi amigo, já resolveu? tbm tive o mesmo problema. Mas depois consegui. Acho que tem um bug.
Quando vc estiver colocando os 2 parâmetros de entrada na function setLastValue(), faça o seguinte:
Assim que terminar o 1o. paramentro que é values, não digite mais nada, nem virgula, nem espaço, simplesmente faça um clique noutro separador do navegador ou num espaço vazio do codigo. Automaticamente o parâmetro será aceite.
Ex.: function setLastValue(values) {
Assim que vc digitar a ultima letra que é o “s” faça o que disse acima.
Abraço

4 Likes

Aqui funcionou normal, mas é muito boa sua dica!

Poxa, não estou conseguindo acertar.

2 Likes

Realmente, usar a virgula ou espaço não funciona, pois a virgula e adicionada quando terminamos de digitar. No celular é um pouco mais dificil

Conseguiu resolver? Se precisar de ajuda avisa!

Ainda não consegui, voltei a estudar os fundamentos.
Venho me esforçando bastante, é minha primeira experiência com programação.
Estou exercitando os conceitos e acredito que em breve conseguirei resolver a questão.

4 Likes

Porque não posso fazer “value[3] = newLastValue”? Tem alguma diferença?

A solução funciona sim mas devemos nos atentar às maiúsculas e minúsculas, em java fazem toda a diferença.

1 Like

1 Like

Esse daí eu fiquei todo atrapalhado,nesse dai eu só fiz copiar e colar pq realmente esse daí achei dificil.

1 Like

Eu estou com dificuldade nesta parte… Alguém poderia esclarecer?! Não consigo colocar o newLastValue fora do [ ] Screenshot_20210806-180540|541x483

Espero ter ajudado. :sunglasses::+1:

1 Like

Pessoal eu refiz o código assim consegui ter progresso, no caso o import estava atualizando junto com o argumento do array na função, acho que por isso estava bugando

Esse exercicio é muito estranho. Estamos declarando a funcão setLastValue para usar ela embaixo certo? Mas o que na declaração faz com que o segundo argumento da função seja a string que vai substituir o ultimo item? E porque o parametro referente à string não precisa ser definido como a string, que no caso é shapes?

Até agora eu consegui entender razoavelmente bem como o código funcionava em cada exercicio, mas nesse eu tive que copiar e colar porque não teve condições.

O suporte mostrar errado chega a parecer até piada. Pensei q o suporte fosse pra ajudar.

Problema que no celular ele não aceita colocar as ’ ’ então está dando erro da declaração da string e não tem o que fazer, não deixa declarar a variável

Na verdade, não há erro. Nem muito menos BUG.

O que houve foi uma mudança. E toda mudança gera impacto.

Para uns, até pode dizer que não houve mudança. Que sempre foi assim…

Ok. Pode até ser.

Mas cada caso, um caso. Se não teríamos que colocar todos no mesmo pé de igualdade. O que é muito complicado.

Sempre qd fazia selecionava o campo e o teclado já se encontrava c/ as opções ativadas. Tendo as certas e as impeditivas, digo: todas misturadas.

Com essa “nova versão” temos que INSERIR, DIGITAR as VARIÁVEIS PREDEFINIDAS. O que acho que daria a mesma coisa de selecionar no teclado. Até pq essa inserção não pode ser qq uma. Mas sim. Limitada dentro do contexto.

Então, foi isso. Qd antes o teclado estava todo ativado. E com essa nova versão que passa a pedir a inserção. Precisamos digitar p/ ativar o teclado.

Para aqueles que acham que não houve mudança. Ok. Blz.

Já avancei…

Também tô com essa dificuldade