Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida sobre o slice

Boa noite, eu entrei no seguinte link para aprender mais sobre o slice: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

Tem uma parte no exemplo que usa o número negativo, o que isso quer dizer, coloquei abaixo o exemplo que tem no link:

const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];

console.log(animals.slice(2)); // Expected output: Array ["camel", "duck", "elephant"]

console.log(animals.slice(2, 4)); // Expected output: Array ["camel", "duck"]

console.log(animals.slice(1, 5)); // Expected output: Array ["bison", "camel", "duck", "elephant"]

console.log(animals.slice(-2)); // Expected output: Array ["duck", "elephant"]

console.log(animals.slice(2, -1)); // Expected output: Array ["camel", "duck"]

console.log(animals.slice()); // Expected output: Array ["ant", "bison", "camel", "duck", "elephant"]

2 respostas
solução!

Bom dia, Marcelo. Quando um índice é negativo, ele é tratado como um deslocamento a partir do final do array. Por exemplo, um índice de -1 representa o último elemento do array, -2 representa o penúltimo elemento, e assim por diante.

No exemplo console.log(animals.slice(-2)); // Expected output: Array ["duck", "elephant"], o início do slice é no índice -2, então ele inicia do penúltimo elemento do array, que no caso é "duck", e vai até o fim.

No exemplo console.log(animals.slice(2, -1)); // Expected output: Array ["camel", "duck"], o inicio é do elemento de índice 2, "camel", e para no último elemento, "elephant", que não é incluído no array.

O curioso é que quando se usa o índice negativo, o valor do índice é incluso no corte do slide, porém, quando se usa o índice positivo, o elemento é incluso o corte.

Por exemplo, usando as amostras do marcelo:

const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];

console.log(animals.slice(2)); // Expected output: Array ["camel", "duck", "elephant"]

Aqui o elemento 2 ("Bison") foi eliminado no corte do slice

Enquanto que no :

console.log(animals.slice(-2)); // Expected output: Array ["duck", "elephant"]

O elemento -2 ("duck") foi incluído no corte.

Como quase tudo em programação, o melhor caminho é estabelecer um padrão de raciocínio e seguir com ele até o fim para evitar múltiplas interpretações tanto de quem está escrevendo quanto para quem vai dar manutenção no código depois.