2010-06-17 25 views
6

Mam ciąg znaków, który ma wartości rozdzielone przecinkami. Jak mogę policzyć, ile elementów w łańcuchu oddziela przecinek. np. Ciąg ma 4 elementypolicz elementy w łańcuchu

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

+0

Bardzo podobny do http://stackoverflow.com/questions/881085/count-the-number-of-occurances-of-a-character-in-a-string-in-javascript choć nie dokładną duplikować. –

Odpowiedz

10

myString.split (''). Długość

1

Pierwszy rozłam go, a następnie policzyć elementy w tablicy. Tak:

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

To nie jest złe, to po prostu inna definicja. Pusty łańcuch również jest wartością;) Spróbuj na przykład ",,". – Wolph

+0

Tak, ale czy w większości przypadków jeden pusty ciąg byłby listą 1 wartości? więc liczba elementów w "a" jest równa liczbie elementów w ""? – SuitedSloth

+0

Nie powiedziałbym, ale zdecydowanie wystarczająco często. Jeśli nie ma wartości, prawdopodobnie nie chcesz uruchamiać tej funkcji w ogóle. – Wolph

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

Wszystkie odpowiedzi sugerujących coś równoważnego do myString.split(',').length może prowadzić do błędnych wyników, ponieważ:

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

pusty ciąg nie jest to, co może warto rozważyć listę 1 przedmiot.

bardziej intuicyjne, a jednocześnie zwięzłe wdrożenie byłoby:

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

To nie uważa ciągi 0 znaków jako elementów na liście.

"".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

Należy pamiętać, że obsługa przeglądarki dla funkcji strzałek jest nadal ograniczona: http://caniuse.com/#feat=arrow-functions Na razie polecam zwykła funkcja zamiast tego – Wolph

+0

Masz rację @Wolph. Wygląda na to, że IE11 ma dziś 12% rynku na całym świecie. – SuitedSloth