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";
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";
myString.split (''). Długość
Pierwszy rozłam go, a następnie policzyć elementy w tablicy. Tak:
"1,2,3,4".split(/,/).length;
To nie jest złe, to po prostu inna definicja. Pusty łańcuch również jest wartością;) Spróbuj na przykład ",,". – Wolph
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
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
var mystring = "1,2,3,4";
var elements = mystring.split(',');
return elements.length;
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
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
Masz rację @Wolph. Wygląda na to, że IE11 ma dziś 12% rynku na całym świecie. – SuitedSloth
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ć. –