Maneira fácil de transformar o JavaScript array numa lista separada por vírgulas?
Tenho um conjunto unidimensional de cordas em JavaScript que I'gostaria de transformar numa lista separada por vírgulas. Existe alguma forma simples em JavaScript (ou jQuery) de transformar isso numa lista separada por vírgulas? (Sei como iterar através da matriz e construir eu próprio o fio por concatenação se esse's for o único caminho).
378
17
O método Array.prototype.join():
Na verdade, a implementação
toString()
faz uma junção com vírgulas por defeito:Não sei se isto é exigido pelas especificações do JS, mas isto é o que
mostpraticamente tudo os navegadores parecem estar a fazer.Ou (mais eficientemente):
O método toString de um array quando chamado devolve exactamente o que precisa - lista separada por vírgulas.
Aqui's uma implementação que converte um array bidimensional ou um array de colunas em uma string CSV devidamente escapada. As funções não verificam a entrada de strings/números ou contagens de colunas válidas (assegure-se de que seu array é válido para começar). As células podem conter vírgulas e aspas!
Aqui's um [script para decodificar strings CSV][1].
Aqui's o meu [script para codificar strings CSV][2]:
[1]: https://github.com/thetalecrafter/excel.js/blob/master/src/csv.js [2]: http://jsfiddle.net/skibulk/F5hGx/19/
Acho que isto deve servir:
[violino](http://jsfiddle.net/mnbayazit/G9mYj/4/)
Basicamente, tudo o que faz é verificar se a string contém uma vírgula ou citação. Se contém, então duplica todas as aspas, e coloca aspas nas pontas. Depois junta cada uma das partes com uma vírgula.
Há muitos métodos para converter um array para uma lista separada por vírgulas
1.
Usando array#join
De MDN
O código
Snippet
2.
Usando array#toString
De MDN
O código
Snippet
3.
Adicione []+ antes do array ou +[] depois de um array
O []+ ou +[] irá convertê-lo em uma cadeia
Prova
irá sair verdadeiro
Snippet
Tambem
Utilize o método integrado `Array.toString'.
MDN no Array.toString()
Se precisar de usar o " e " em vez do ", " entre os dois últimos itens, você pode fazer isso:
Eu geralmente me vejo precisando de algo que também salte o valor se esse valor for "nulo" ou "indefinido", etc.
Então aqui está a solução que funciona para mim:
A maioria das soluções aqui retornariam
', apple'
se meu array se parecesse com o do meu segundo exemplo. É por isso que eu prefiro esta solução.Você quer terminar com um " e"?
Para esta situação, eu criei um módulo npm.
Tente [arrford][1]:
Utilização
Instalar
Ler mais
[https://github.com/dawsonbotsford/arrford][1] [2]
Experimente você mesmo
[Ligação tônica][2]
[1]: https://github.com/dawsonbotsford/arrford [2]: https://tonicdev.com/dawsonbotsford/56f46dd154d4e814002e34b9
Pegando o código inicial:
A resposta inicial de usar a função de união é ideal. Uma coisa a considerar seria o uso final da corda.
Para usar em alguma exibição textual final:
Para usar em uma URL para passar múltiplos valores de uma maneira (um pouco) RESTful:
Claro, tudo depende do uso final. Basta manter a fonte de dados e o uso em mente e tudo estará certo com o mundo.
Eu gostei da solução em [https://jsfiddle.net/rwone/qJUh2/][1] porque ela adiciona espaços após vírgulas:
Ou, como sugerido por @StackOverflaw nos comentários:
[1]: https://jsfiddle.net/rwone/qJUh2/
[Papa Parse][1] (baseado no navegador) lida com vírgulas em valores e outros casos de bordas. Use [Baby Parse][2] para Node.
Ex. (nó)
1,,"a,b"
[1]: http://papaparse.com/ [2]: https://github.com/Rich-Harris/BabyParse
Esta solução também remove valores tais como
" "
:A partir de [Chrome 72][1], é possível usar [Intl.ListFormat][2]:
Por favor, note que esta forma está em sua fase muito anterior, portanto, a partir da data de postagem desta resposta, espere incompatibilidade com versões mais antigas do Chrome e outros navegadores.
[1]: https://developers.google.com/web/updates/2019/01/nic72#intl-format [2]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ListFormat