No passado, usávamos uma variedade de hacks para converter objetos do tipo Array (como arguments e NodeList) para uma matriz verdadeira. O senhor pode ver alguns desses hacks aqui:


Essencialmente, usaríamos Array.prototype.slice.call() no arguments ou NodeList para fazer a conversão. Atualmente, há uma solução mais direta para converter um tipo em outro.


Converter NodeList para Array



var divs = Array.from(document.querySelectorAll('div'));

// Array[232] (every DIV on the page)


Converter arguments para Array



function something() {
  var args = Array.from(arguments);

  // Array['yes', 1, {}]
}
something('yes', 1, {});


Converter String para Array



Array.from('JavaScript'); // Same as 'JavaScript'.split('')

// ["J", "a", "v", "a", "S", "c", "r", "i", "p", "t"]


O código é muito mais limpo e não há necessidade de usar o slice hack!

  • Eu’sou um impostor

    Essa é a coisa mais difícil que já tive de escrever, muito menos admitir para mim mesmo. Já escrevi cartas de demissão de empregos que amava, terminei relacionamentos, fracassei em uma série de tarefas e me decepcionei em minha vida. Todos esses sentimentos foram muito…

  • CSS @supports

    A detecção de recursos via JavaScript é uma prática recomendada do lado do cliente e por todos os motivos certos, mas, infelizmente, essa mesma funcionalidade não está disponível no CSS. O que acabamos fazendo é repetir as mesmas propriedades várias vezes com cada prefixo de navegador. Que nojo. Outra coisa que…