2010-06-17 10 views
6

Tengo una cadena que tiene valores separados por comas. ¿Cómo puedo contar cuántos elementos en la cadena están separados por comas? por ejemplo, la siguiente cadena tiene 4 elementoscuente los elementos en la cadena

string = "1,2,3,4";

+0

muy similar a http://stackoverflow.com/questions/881085/count-the-number-of-occurances-of-a-character-in-a-string-in-javascript aunque no es un exacto duplicar. –

Respuesta

10

myString.split (''). Longitud

1

Primera división, y luego contar los elementos de la matriz. De esta manera:

"1,2,3,4".split(/,/).length; 
+0

No está mal, es simplemente una definición diferente. La cadena vacía también es un valor;) Pruebe ",," por ejemplo. – Wolph

+0

Sí, pero ¿diría usted que, en la mayoría de los casos de uso, una sola cadena vacía se consideraría una lista de 1 valor? entonces ... ¿el conteo de ítems en "a" es igual al conteo de ítems en ""? – SuitedSloth

+0

No diría más, pero definitivamente con la suficiente frecuencia. Si no hay ningún valor, probablemente no desee ejecutar la función en absoluto. – Wolph

4
var mystring = "1,2,3,4"; 
var elements = mystring.split(','); 
return elements.length; 
0

Todas las respuestas que sugieren algo equivalente a myString.split(',').length podría conducir a resultados incorrectos porque:

"".split(',').length == 1 

Una cadena vacía no es lo que es posible que desee considerar una lista de 1 articulo.

Una aplicación más intuitiva, y aún así sería sucinta:

myString.split(',').filter((i) => i.length).length 

Esto no tiene en cuenta las cadenas 0 ningún carácter como elementos de la lista.

"".split(',').filter((i) => i.length).length 
0 

"1".split(',').filter((i) => i.length).length 
1 

"1,2,3".split(',').filter((i) => i.length).length 
3 

",,,,,".split(',').filter((i) => i.length).length 
0 
+0

Tenga en cuenta que el soporte del navegador para las funciones de flecha sigue siendo limitado: http://caniuse.com/#feat=arrow-functions Por el momento lo recomendaría una función normal en su lugar – Wolph

+0

Tienes razón @Wolph. Parece que IE11 todavía tiene un 12% de cuota de mercado en todo el mundo hoy. – SuitedSloth

Cuestiones relacionadas