splice()
pode levar até três parâmetros? Bem, podemos ir um passo além com splice()
- além de remover elementos, podemos usar esse terceiro parâmetro, que representa um ou mais elementos, para adicioná- los também. Isso pode ser incrivelmente útil para trocar rapidamente um elemento ou um conjunto de elementos por outro. Por exemplo, digamos que você esteja armazenando um esquema de cores para um conjunto de elementos DOM em uma matriz e queira alterar dinamicamente uma cor com base em alguma ação: function colorChange (arr, index, newColor) {Essa função usa uma matriz de valores hexadecimais, um índice no qual remover um elemento e a nova cor para substituir o elemento removido. O valor de retorno é uma matriz contendo um esquema de cores recém-modificado! Embora este exemplo seja um pouco simplificado, podemos ver o valor que a
arr.splice (index, 1, newColor);
return arr;
}
deixe colorScheme = ['# 878787', '# a08794', '# bb7e8c', '# c9b6be', '# d1becf'];
colorScheme = colorChange (colorScheme, 2, '# 332327');
// removemos '# bb7e8c' e adicionamos '# 332327' em seu lugar
// colorScheme agora é igual a ['# 878787', '# a08794', '# 332327', '# c9b6be', '# d1becf']
splice()
pode ter no seu potencial máximo. htmlColorNames
, que usa uma matriz de cores HTML como argumento. Modifique a função usando splice()
para remover os dois primeiros elementos da matriz e adicione 'DarkSalmon'
e 'BlanchedAlmond'
em seus respectivos locais. htmlColorNames
deve retornar ["DarkSalmon", "BlanchedAlmond", "LavenderBlush", "PaleTurqoise", "FireBrick"]
'
testString: 'assert.deepEqual(htmlColorNames(["DarkGoldenRod", "WhiteSmoke", "LavenderBlush", "PaleTurqoise", "FireBrick"]), ["DarkSalmon", "BlanchedAlmond", "LavenderBlush", "PaleTurqoise", "FireBrick"], "htmlColorNames
should return ["DarkSalmon", "BlanchedAlmond", "LavenderBlush", "PaleTurqoise", "FireBrick"]
");'
- text: A função htmlColorNames
deve utilizar o método splice()
testString: 'assert(/.splice/.test(code), "The htmlColorNames
function should utilize the splice()
method");'
- text: Você não deve usar shift()
ou unshift()
.
testString: 'assert(!/shift|unshift/.test(code), "You should not use shift()
or unshift()
.");'
- text: Você não deve usar a notação de colchetes de matriz.
testString: 'assert(!/\[\d\]\s*=/.test(code), "You should not use array bracket notation.");'
```