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'];

3 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

2 Likes

Aqui funcionou normal, mas é muito boa sua dica!

Poxa, não estou conseguindo acertar.

1 Like

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.

2 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.