czwartek,
Statystyki łańcucha znaków
Policzenie wszystkich wystąpień znaków w łańcuchu za pomocą języka JavaScript tylko wydaje się trudnym zadaniem. W prezentowanym skrypcie zrealizowano to przy pomocy pętli. Wykorzystano także właściwość łańcuchów znaków polegającą na możliwości odwołania się do pojedynczego znaku w podobny sposób jak w przypadku elementów tablic (zapis s[i]). Dodatkowego wyjaśnienia wymaga także fragment stats[s[i]] || (stats[s[i]] = 0) z dziewiątego wiersza. Ten skrócony zapis oznacza: jeśli nie istnieje wywołany element, zainicjuj go z wartością zero.
W prezentowanym skrypcie zastosowano prosty obiekt (stats) mapujący klucze na wartości. Nazwami kluczy stają się znaki z analizowanego łańcucha. Wartości to sumy wystąpień danego znaku. Dzięki wykorzystaniu kluczy w takiej postaci łatwo zliczyć wystąpienia poszczególnych elementów. Wywołanie s[i] zawsze zwraca kolejny znak określony indeksem i.
Gdyby wielkość liter miała być ignorowana, można na początku użyć np. metody toLowerCase(), która zamienia wszystkie litery na małe. Dalsza część skryptu będzie działać bez zmian.
var x, u, s, i;
var stats = {};
s = 'Centrum Kształcenia Zawodowego i Ustawicznego!';
x = s.length;
u = 0;
for(i=0; i < x; i++) {
stats[s[i]] || (stats[s[i]] = 0);
stats[s[i]]++;
}
console.log('Łańcuch znaków: ' + s);
console.log('Długość łańcucha: ' + x);
for(i in stats) {
console.log("'" + i + "': " + stats[i]);
u++;
}
console.log('Unikalne znaki w ciągu: ' + u);
W części wypisującej wyniki analizy (druga pętla) zliczana jest ilość unikalnych znaków występujących w łańcuchu. Wynik działania skryptu trafia do konsoli JavaScript. W takie narzędzie są wyposażone wszystkie współczesne popularne przeglądarki stron internetowych, najczęściej można je wywołać za pomocą klawisza F12 (w Firefoksie skrót Ctrl+Shift+K).
Widoczny w konsoli JavaScript efekt działania skryptu:
Łańcuch znaków: Centrum Kształcenia Zawodowego i Ustawicznego!
Długość łańcucha: 46
'C': 1
'e': 4
'n': 3
't': 3
'r': 1
'u': 1
'm': 1
' ': 4
'K': 1
's': 2
'z': 2
'a': 4
'ł': 1
'c': 2
'i': 3
'Z': 1
'w': 3
'o': 4
'd': 1
'g': 2
'U': 1
'!': 1
Unikalne znaki w ciągu: 22