Witam. Ostatnio w pewnym wątku, ktoś polecał pewien kurs (nie będę mówił jaki, bo jeszcze o reklamę mnie posądzicie). Zadaniem było napisanie programu, który w łańcuchu (chyba tak to się po polsku pisze :P) wyszukuje wyraz z daną pierwszą literą, po czym wprowadza te litery do macierzy i potem je wyświetla. Wstawiam poniżej kod:
spoiler start
var text = "Dawid lubi jeść zupę. Dawid \
lubi jeździć samochodem. Dawid lubi \
robić burrito. Dawid rządzi, każdy to wie. \
Dawid lubi Diablo 3.";
var myName = "Dawid";
var hits = [];
for (var i=0; i < text.length; i++);
if (text === 'D');
for (var j=i; j<i+myName.length; j++);
hits.push(text[j]);;
;
;
if(hits.length===0);
console.log("Your name wasn't found!");;
else;
console.log(hits);;
spoiler stop
Rodzi się tutaj pytanie. Co oznacza text[ i ] oraz text[ j ]? Mam nadzieję, że mnie ktoś poratuje odpowiedzią... :P
Edit: Drugie pytanie, dlaczego w drugiej pętli mamy j<i+myName.length, a nie j<myName.length. Wybaczcie, te może noobskie pytania, ale chcę rozwiać wątpliwości.
Nie widzę w kodzie text, strzelam że jest w pierwszym "if" - przy porównaniu. Bo inaczej zadanie nie ma sensu.
Tekst to tablica znaków, więc daje się dobrać do poszczególnych liter po kolei - litera na i-tym i j-tym miejscu, zaczynając od 0.
W drugiej pętli mamy i+myName.length bo zacznyamy od j=i - w przeciwnym przypadku nie wykonała by się pętla dla kolejnych wystąpień imienia poza pierwszym - albo w ogóle, jeśli tekst zaczynałby się od czegoś innego. Bierzemy myName.lenght znaków od pozycji j=i, więc dla i=10, jeśli chcemy 5 znaków, musimy się zatrzymać na j<15 a nie 5 - wtedy wyszła by pętla for (j=10; j<5; j++) - czyli nigdy by się nie wykonała.
Hmm. A to text to nie jest to?
var text = "Dawid lubi jeść zupę. Dawid \
lubi jeździć samochodem. Dawid lubi \
robić burrito. Dawid rządzi, każdy to wie. \
Dawid lubi Diablo 3.";
Druga sprawa wyjaśniona, a co z tym textem? :v
Wrzuć kod na jsfiddle, bo w obecnej formie nie da się go czytać / używać :)
Kod piszę na stronie codecademy.com. Nie mam zielonego pojęcia, czy coś jest jeszcze dodawane, aby wyświetlić wyniki. Tam wygląda to tak ->>>
Natomiast na jsfiddle kod nie działa.
https://jsfiddle.net/m7L2bb3v/
Co muszę zmienić? Nie bijcie za błędy, piszę w javascripcie dopiero 3 dzień. :P
stringi w js działają trochę jak tablice, text oznacza literę o numerze "i" w stringu (zaczynamy od 0)
np "Dawid"[2] === "w"
w tym kodzie jedno rzuca mi się od razu - nigdy nie znajdziesz text === "D"
w tej pętli musisz szukać text ==="D"
w tym kodzie jedno rzuca mi się od razu - nigdy nie znajdziesz text === "D"
w tej pętli musisz szukać text ==="D" Nie bardzo rozumiem.
Kod powinien w tekście szukać litery "D". Jeśli ją znajdzie musi wpisać ją do macierzy wraz z czterema pozostałymi znakami, ponieważ zmienna myName posiada pięć znaków. Także znakami, jakie będą wprowadzone do macierzy będą te które tworzą - 5x "Dawid i raz "Diabl" (pięć znaków). Następnie, jeśli macierz jest pusta, wyświetlone zostanie "Your name wasn't found!". W innym wypadku zawartość macierzy.
A, to GOL wycina nawiasy kwadratowe - tami miało być, że nie widzę text[ i ] a nie text. Czyli pewnie w 1 poście tak samo wcięło jak i u mnie oraz kaczmen. Reszta tak jak pisałem ja oraz inni - tekst to tablica znaków, przez nawiasy kwadratowe odwołujesz się m.in. do indeksu w tablicy.
no właśnie zjada
jeżeli ma zbudować tablicę z każdą literą "D" + 4 następne znaki, to zamiast pętli "for" możesz dać po prostu hits.push(text.substr(i, myName.length))
na jsfiddle nie ma opcji pokazania konsoli?
Kurde wybaczcie, nie miałem pojęcia, że zje te nawiasy.
Sanchin, co do tego text[ i ] to zmyliły mnie nawiasy kwadratowe. Odwołuję się do stringa, a nie array w którym one właśnie są. Stąd ten kłopot.
kaczmen no jest okienko Results, ale niestety nie pokazuje działania kodu. Coś powinienem dodać?
console.log loguje do konsoli, wciśnij sobie f12 (chrome/firefox) i zobacz część "console", to tam pojawiają się te dane
ewentualnie http://jsbin.com/guwudiguve/1/edit?html,js,console,output
Ogromne dzięki za pomoc panowie. :) Uratowaliście mi głowę, inaczej noc byłaby trudna. :P
gdybyś nie miał używać funkcji substr i musiał użyć for to - http://jsbin.com/quqifipogu/1/edit?html,js,console,output
+ sprawdzenie, czy ostatnie D ma za sobą 4 znaki