5 เบงเบฝเบเบชเปเบฒเบžเบฒเบ” JavaScript เบ›เบปเบเบเบฐเบ•เบด: เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปเบฅเบฐเบเบฒเบ™เปเบเป‰เป„เบ‚

5 เบงเบฝเบเบชเปเบฒเบžเบฒเบ” JavaScript เบ›เบปเบเบเบฐเบ•เบด: เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปเบฅเบฐเบเบฒเบ™เปเบเป‰เป„เบ‚

เบˆเบฒเบเบ™เบฑเบเปเบ›: เบˆเบฑเบ”เบžเบตเบกเบกเบฒเบšเบปเบ”เบ„เบงเบฒเบกเบชเปเบฒเบฅเบฑเบšเบ—เปˆเบฒเบ™ Maria Antonietta Perna, เบœเบนเป‰เบ—เบตเปˆเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบงเบฝเบ JavaScript เบ—เบปเปˆเบงเป„เบ›, เบชเปˆเบงเบ™เบซเบผเบฒเบเบกเบฑเบเบˆเบฐเบชเบฐเป€เบซเบ™เบตเปƒเบซเป‰เบœเบนเป‰เบชเบฐเบซเบกเบฑเบเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบชเปเบฒเบžเบฒเบ”. เบšเบปเบ”เบ‚เบฝเบ™เบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”, เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบชเบณ เบฅเบฑเบšเบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เปเบเบผเบกเบˆเบปเบง.

เบเบฒเบ™เบชเปเบฒเบžเบฒเบ”เบขเบนเปˆเบšเปเบฅเบดเบชเบฑเบ”เป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบตเปเบกเปˆเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเบ‚เบญเบ‡เป€เบกเบทเบญเบ‡เบ”เบปเบ™เบ™เบฒเบ™. เบ™เบตเป‰เบšเปเปˆเบ„เบงเบ™เปเบ›เบเปƒเบˆ - เบเบฒเบ™เบชเปเบฒเบžเบฒเบ”เบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบˆเบฐเปƒเบซเป‰เบ—เปˆเบฒเบ™เบกเบตเป‚เบญเบเบฒเบ”เบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบงเบฝเบเบ—เบตเปˆเบ”เบต. เปเบ•เปˆเบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เป€เบฅเบทเปˆเบญเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบ, เป€เบžเบฒเบฐเบงเปˆเบฒเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบกเบฑเบเบˆเบฐเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚.

เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบชเปˆเบงเบ™เบซเบผเบฒเบเปเบฅเป‰เบง, เบงเบฝเบเบ‡เบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเปˆเบงเบ™เปƒเบซเบเปˆเบšเปเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆเบœเบนเป‰เบชเบฐเบซเบกเบฑเบเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”, เปเบ•เปˆเบžเบงเบเป€เบ‚เบปเบฒเบเบฑเบ‡เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚. เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบเบฐเบ”เบฒเบ™, เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฑเบš Google เบซเบผเบทเปเบซเบผเปˆเบ‡เบญเบทเปˆเบ™เป†. เปเบกเปˆเบ™เปเบฅเป‰เบง, เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เปเบกเปˆเบ™เบ„เปˆเบญเบเป†เบ›เปˆเบฝเบ™เปเบ›เบ‡, เปเบฅเบฐเบšเบฒเบ‡เบšเปเบฅเบดเบชเบฑเบ”เบเปเบฒเบฅเบฑเบ‡เบ›เบฐเบ–เบดเป‰เบกเบเบฒเบ™เบชเปเบฒเบžเบฒเบ”เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เปเบ•เปˆเบ™เบฒเบเบˆเป‰เบฒเบ‡เบซเบผเบฒเบเบ„เบปเบ™เบเบฑเบ‡เบเบถเบ”เบซเบกเบฑเป‰เบ™เบเบฑเบšเบ›เบฐเป€เบžเบ™เบตเบ™เบตเป‰. เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เปเบกเปˆเบ™เบญเบธเบ—เบดเบ”เปƒเบซเป‰เบเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบงเบฝเบเบ‡เบฒเบ™ JavaScript เบ›เบปเบเบเบฐเบ•เบดเบ—เบตเปˆเบกเบฑเบเบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบ›เบฑเบ™เบงเบฝเบเบ‡เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบŠเบญเบเบซเบฒเบงเบฝเบ.

เบžเบงเบเป€เบฎเบปเบฒเป€เบ•เบทเบญเบ™: เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบญเปˆเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡ "Habr" - เบชเปˆเบงเบ™เบซเบผเบธเบ” 10 rubles เป€เบกเบทเปˆเบญเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เปƒเบ™เบซเบผเบฑเบเบชเบนเบ” Skillbox เป‚เบ”เบเปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”เบชเบปเปˆเบ‡เป€เบชเบตเบก "Habr".

Skillbox เปเบ™เบฐเบ™เปเบฒ: เบซเบผเบฑเบเบชเบนเบ”เบžเบฒเบเบ›เบฐเบ•เบดเบšเบฑเบ” "เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบทเบ–เบท PRO".

เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปเบกเปˆเบ™เบเบฒเบ™เบเบฐเบเบฝเบกเบขเปˆเบฒเบ‡เบฅเบฐเบญเบฝเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเปเบฒเบžเบฒเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

เปเบกเปˆเบ™เปเบฅเป‰เบง, เบเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบšเบดเปˆเบ‡เบซเบ™เป‰เบฒเบงเบฝเบ, เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบšเบฒเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบชเปเบฒเบžเบฒเบ”เบ—เบปเปˆเบงเป„เบ›.

เบชเบดเปˆเบ‡เบ•เบปเป‰เบ™เบ•เปเปเบกเปˆเบ™เบเบฒเบ™เบเบฐเบเบฝเบกเบฅเปˆเบงเบ‡เบซเบ™เป‰เบฒ. เบ—เบปเบ”เบชเบญเบšเบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเบทเปˆ Algorithms เปเบฅเบฐเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เป„เบ”เป‰เบ”เบตเบ›เบฒเบ™เปƒเบ”, เปเบฅเบฐเบ›เบฑเบšเบ›เบธเบ‡เบ„เบงเบฒเบกเบฎเบนเป‰เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบ—เบตเปˆเบ—เปˆเบฒเบ™เบšเปเปˆเบ„เบธเป‰เบ™เป€เบ„เบตเบเป€เบเบตเบ™เป„เบ›. เบกเบตเบซเบผเบฒเบเป€เบงเบ—เบตเบญเบญเบ™เป„เบฅเบ™เปŒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบเบฐเบเบฝเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเปเบฒเบžเบฒเบ”. เบžเบงเบเป€เบฎเบปเบฒเปเบ™เบฐเบ™เปเบฒ geeksforgeeks, เบ›เบนเปˆ, Interviewing.io ะธ CodeSignal.

เบกเบฑเบ™เบ„เบธเป‰เบกเบ„เปˆเบฒเบ—เบตเปˆเบˆเบฐเบฎเบฝเบ™เบฎเบนเป‰เบ—เบตเปˆเบˆเบฐเป€เบงเบปเป‰เบฒเบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบญเบญเบเบกเบฒเบ”เบฑเบ‡เป†. เบ„เบงเบ™เบšเบญเบเบœเบนเป‰เบชเบฐเปเบฑเบเบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”, เปเบฅเบฐเบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบ‚เบฝเบ™เปƒเบชเปˆเบเบฐเบ”เบฒเบ™ (เบซเบผเบทเบžเบดเบกเบฅเบฐเบซเบฑเบ”เปƒเบชเปˆเบ„เบญเบกเบžเบดเบงเป€เบ•เบต, เบเบฑเบ‡เบ‡เบฝเบšเป†). เบงเบดเบ—เบตเบ™เบตเป‰, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”เบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบฅเบฐเบซเบฑเบ”, เปเบ•เปˆเบเบฒเบ™เปเบเป‰เป„เบ‚เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบกเปˆเบ™เบ–เบทเบเบ•เป‰เบญเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเป‚เบญเบเบฒเบ”เบ—เบตเปˆเบˆเบฐเบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”.

เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบ‚เบปเป‰เบฒเปƒเบˆเบšเบฑเบ™เบซเบฒเบเปˆเบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบเป‰เป„เบ‚เบกเบฑเบ™. เปƒเบ™เบšเบฒเบ‡เบเปเบฅเบฐเบ™เบต, เป€เบˆเบปเป‰เบฒเบญเบฒเบ”เบˆเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเบฝเบเบ‡เบฒเบ™เบญเบฑเบ™เปœเบถเปˆเบ‡เบขเปˆเบฒเบ‡เป€เบฅเบดเบเป€เบŠเบดเปˆเบ‡ เปเบฅเป‰เบงเบฅเบปเบ‡เป„เบ›เปƒเบ™เบ—เบฒเบ‡เบ—เบตเปˆเบœเบดเบ”. เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบ„เบธเป‰เบกเบ„เปˆเบฒเบ—เบตเปˆเบˆเบฐเบ–เบฒเบกเบ„เบณเบ–เบฒเบกเบ—เบตเปˆเบŠเบตเป‰เปเบˆเบ‡เปœเป‰เบญเบเปœเบถเปˆเบ‡เปƒเบซเป‰เบเบฑเบšเบœเบนเป‰เบชเบณเบžเบฒเบ”.

เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบเบถเบเบเบฒเบ™เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบ”เป‰เบงเบเบกเบท, เบšเปเปˆเปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™ PC. เบกเบฑเบ™เป€เบเบตเบ”เบ‚เบทเป‰เบ™เบงเปˆเบฒเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบชเปเบฒเบžเบฒเบ”เบœเบนเป‰เบชเบฐเบซเบกเบฑเบเป„เบ”เป‰เบฎเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบเปเบฅเบฐเบเบฐเบ”เบฒเบ™เบ‚เบฒเบง, เบšเปˆเบญเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบซเบผเบทเบเบฒเบ™เบˆเบฑเบ”เบฎเบนเบšเปเบšเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เป€เบกเบทเปˆเบญเบŠเบญเบเบซเบฒเบงเบดเบ—เบตเปเบเป‰เป„เบ‚, เบกเบฑเบ™เบ„เบธเป‰เบกเบ„เปˆเบฒเบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบฅเบปเบ‡เปƒเบ™เป€เบˆเป‰เบเบซเบผเบทเป‚เบ”เบเบเบปเบ‡เปƒเบชเปˆเบเบฐเบ”เบฒเบ™. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบเบฑเบšเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบขเบนเปˆเปƒเบ™เบซเบปเบง, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบฅเบทเบกเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™.

เปœเป‰เบฒเบงเบฝเบเปเบกเปˆเปเบšเบšเปƒเบ™ JavaScript

เบšเบฒเบ‡เปœเป‰เบฒเบงเบฝเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบšเบ—เปˆเบฒเบ™เปเบฅเป‰เบง. เบ—เปˆเบฒเบ™เป€เบ„เบตเบเบกเบตเบเบฒเบ™เบชเปเบฒเบžเบฒเบ”เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เปเบเป‰เป„เบ‚เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™, เบซเบผเบทเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบฎเบฝเบ™ JavaScript. เปเบฅเป‰เบง, เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบฑเบ™เป€เบ–เบดเบ‡เป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเปเบเป‰เป„เบ‚เบžเบงเบเบกเบฑเบ™เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เปเบฅเบฐเบกเบตเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบขเปˆเบฒเบ‡เบฅเบฐเบญเบฝเบ”เบเปˆเบฝเบงเบเบฑเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™.

Palindrome

Palindrome เปเบกเปˆเบ™เบ„เปเบฒเบชเบฑเบš, เบ›เบฐเป‚เบซเบเบเบซเบผเบทเบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เบตเปˆเบญเปˆเบฒเบ™เบ„เบทเบเบฑเบ™เบ—เบฑเบ‡เปƒเบ™เบ—เบดเบ”เบ—เบฒเบ‡เบ›เบปเบเบเบฐเบ•เบดเปเบฅเบฐเปƒเบ™เบ—เบดเบ”เบ—เบฒเบ‡เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก. เบ•เบปเบงเบขเปˆเบฒเบ‡, "Anna" เปเบกเปˆเบ™ palindrome, เปเบ•เปˆ "เบ•เบฒเบ•เบฐเบฅเบฒเบ‡" เปเบฅเบฐ "John" เบšเปเปˆเปเบกเปˆเบ™.

เบ‚เบฑเป‰เบ™เบ•เบญเบ™

เป„เบ”เป‰เบฎเบฑเบšเบŠเปˆเบญเบเปเบ™เปˆ; เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ‚เบฝเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบเบฑเบšเบ„เบทเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบชเบฐเบ•เบฃเบดเบ‡เป€เบ›เบฑเบ™ palindrome, เปเบฅเบฐเบœเบดเบ”เบ–เป‰เบฒเบšเปเปˆเปเบกเปˆเบ™. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบเบงเบฑเบเบ•เบญเบ™.

palindrome('racecar') === เบˆเบดเบ‡
palindrome('เบ•เบฒเบ•เบฐเบฅเบฒเบ‡') === เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡

เปƒเบซเป‰เป€เบฎเบปเบฒเบงเบดเป€เบ„เบฒเบฐเปœเป‰เบฒเบงเบฝเบ

เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ•เบปเป‰เบ™เบ•เปเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ›เบตเป‰เบ™เบชเบฒเบเป€เบŠเบทเบญเบ. เบ–เป‰เบฒเบชเบฐเบ•เบฃเบดเบ‡ "เบ›เบตเป‰เบ™เบเบฑเบšเบเบฑเบ™" เปเบกเปˆเบ™เบ„เบทเบเบฑเบ™เบเบฑเบšเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš palindrome เปเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบ„เบงเบ™เบเบฑเบšเบ„เบทเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡. เบ–เป‰เบฒเบšเปเปˆเปเบกเปˆเบ™, เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡.

เบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆ

เบ™เบตเป‰เปเบกเปˆเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเปเบเป‰เป„เบ‚ palindrome เป„เบ”เป‰.

const palindrome = str => {
  // turn the string to lowercase
  str = str.toLowerCase()
  // reverse input string and return the result of the
  // comparisong
  return str === str.split('').reverse().join('')
}

เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบ—เปเบฒโ€‹เบญเบดเบ”โ€‹เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เบ•เบปเบงโ€‹เบญเบฑเบโ€‹เบชเบญเบ™โ€‹เปƒเบ™โ€‹เบชเบฐโ€‹เบ•โ€‹เบฃเบดเบ‡โ€‹เบเบฒเบ™โ€‹เบ›เป‰เบญเบ™โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบ•เบปเบงโ€‹เบžเบดเบกโ€‹เบ™เป‰เบญเบโ€‹. เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเป‚เบ„เบ‡เบเบฒเบ™เบˆเบฐเบ›เบฝเบšเบ—เบฝเบšเบ•เบปเบงเบฅเบฐเบ„เบญเบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡, เปเบฅเบฐเบšเปเปˆเปเบกเปˆเบ™เบเปเบฅเบฐเบ™เบตเบซเบผเบทเบชเบดเปˆเบ‡เบญเบทเปˆเบ™.

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเบชเบญเบ‡เปเบกเปˆเบ™เบเบฒเบ™เบ›เบตเป‰เบ™เป€เบชเบฑเป‰เบ™. เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เป€เบฅเบทเปˆเบญเบ‡เบเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”: เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™ array เป‚เบ”เบเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™ .split() (String library). เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒ reverse array เป‚เบ”เบเปƒเบŠเป‰ .reverse() (Array library). เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบชเบธเบ”โ€‹เบ—เป‰เบฒเบโ€‹เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™ array reverse เป€เบ›เบฑเบ™โ€‹เบชเบฐโ€‹เบ•โ€‹เบฃเบดเบ‡โ€‹เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰ .join() (Array library).

เบ•เบญเบ™เบ™เบตเป‰เบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบ„เบทเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบชเบฐเบ•เบฃเบดเบ‡ "เบ›เบตเป‰เบ™เบเบฑเบšเบเบฑเบ™" เบเบฑเบšเบชเบฐเบ•เบฃเบดเบ‡เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš, เปƒเบซเป‰เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡ เบซเบผเบทเบœเบดเบ”.

FizzBuzz

เบซเบ™เบถเปˆเบ‡เปƒเบ™เบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆเบ™เบดเบเบปเบกเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”เปƒเบ™เบเบฒเบ™เบชเปเบฒเบžเบฒเบ”.

เบ‚เบฑเป‰เบ™เบ•เบญเบ™

เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ‚เบฝเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบžเบดเบกเบ•เบปเบงเป€เบฅเบเบˆเบฒเบ 1 เบซเบฒ n เป„เบ›เบซเบฒเบ„เบญเบ™เป‚เบŠเบ™, เบšเปˆเบญเบ™เบ—เบตเปˆ n เป€เบ›เบฑเบ™เบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบกเบ—เบตเปˆเบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบŠเป‰เป€เบ›เบฑเบ™เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต, เป‚เบ”เบเบกเบตเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • output fizz เปเบ—เบ™เบเบฒเบ™เบ„เบนเบ™เบ‚เบญเบ‡ 3;
  • output buzz เปเบ—เบ™เบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเบ„เบนเบ™เบ‚เบญเบ‡ 5;
  • fizzbuzz output เปเบ—เบ™เบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเบ„เบนเบ™เบ‚เบญเบ‡เบ—เบฑเบ‡ 3 เปเบฅเบฐ 5.

เบ•เบปเบงเบขเปˆเบฒเบ‡:

Fizzbuzz(5)

เบœเบปเบ™

// เบ›เบต 1
// เบ›เบต 2
// fizz
// เบ›เบต 4
// เบชเบฝเบ‡เบ”เบฑเบ‡

เปƒเบซเป‰เป€เบฎเบปเบฒเบงเบดเป€เบ„เบฒเบฐเปœเป‰เบฒเบงเบฝเบ

เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เปเบกเปˆเบ™เบงเบดเบ—เบตเบเบฒเบ™เบŠเบญเบเบซเบฒเบ•เบปเบงเบ„เบนเบ™เป‚เบ”เบเปƒเบŠเป‰ JavaScript. เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเปƒเบŠเป‰เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ modulus เบซเบผเบทเบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญ - %, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบฐเปเบ”เบ‡เบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบฅเบทเบญเปƒเบ™เป€เบงเบฅเบฒเปเบšเปˆเบ‡เบชเบญเบ‡เบ•เบปเบงเป€เบฅเบ. เบ–เป‰เบฒเบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเปเบกเปˆเบ™ 0, เบกเบฑเบ™เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ•เบปเบงเป€เบฅเบเบ—เปเบฒเบญเบดเบ”เป€เบ›เบฑเบ™เบ•เบปเบงเบ„เบนเบ™เบ‚เบญเบ‡เบ—เบตเบชเบญเบ‡.

12% 5 // 2 -> 12 เบšเปเปˆเปเบกเปˆเบ™เบ•เบปเบงเบ„เบนเบ™ 5
12% 3 // 0 -> 12 เปเบกเปˆเบ™เบ„เบนเบ™เบ‚เบญเบ‡ 3

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ–เป‰เบฒเป€เบˆเบปเป‰เบฒเบซเบฒเบ™ 12 เบ„เบนเบ™ 5, เป€เบˆเบปเป‰เบฒเป„เบ”เป‰ 2 เบเบฑเบšเบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบฅเบทเบญเบ‚เบญเบ‡ 2. เบ–เป‰เบฒเป€เบˆเบปเป‰เบฒเบซเบฒเบ™ 12 เบ„เบนเบ™ 3, เป€เบˆเบปเป‰เบฒเบˆเบฐเป„เบ”เป‰ 4 เบเบฑเบšเบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเบ‚เบญเบ‡ 0. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เปเบฒเบญเบดเบ”, 12 เบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เบ„เบนเบ™เบ‚เบญเบ‡ 5, เปƒเบ™เบ—เบตเบชเบญเบ‡. , 12 เปเบกเปˆเบ™เบเบฒเบ™เบ„เบนเบ™เบ‚เบญเบ‡ 3.

เบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆ

เบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบˆเบฐเป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ”เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

const fizzBuzz = num => {
  for(let i = 1; i <= num; i++) {
    // check if the number is a multiple of 3 and 5
    if(i % 3 === 0 && i % 5 === 0) {
      console.log('fizzbuzz')
    } // check if the number is a multiple of 3
      else if(i % 3 === 0) {
      console.log('fizz')
    } // check if the number is a multiple of 5
      else if(i % 5 === 0) {
      console.log('buzz')
    } else {
      console.log(i)
    }
  }
}

เบŸเบฑเบ‡เบŠเบฑเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™เบ•เบฒเบกเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เปเบฅเบฐเบœเบฐเบฅเบดเบ”เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบ”เบเบœเบนเป‰เปƒเบŠเป‰. เปƒเบ™เบšเบฑเบ™เบซเบฒ, เบกเบฑเบ™เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบˆเบฐเป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเบเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™ if ... เบญเบทเปˆเบ™: เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ„เบนเปˆ (&&) เปเบฅเบฐเบชเบดเป‰เบ™เบชเบธเบ”เบ”เป‰เบงเบเบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบ•เบปเบงเป€เบฅเบเป„เบ”เป‰. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบเบงเบกเป€เบญเบปเบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบฑเบ‡เบซเบกเบปเบ”.

Anagram

เบ™เบตเป‰เปเบกเปˆเบ™เบŠเบทเปˆเบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบ—เบตเปˆเบกเบตเบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบ„เปเบฒเบญเบทเปˆเบ™เปƒเบ™เบˆเปเบฒเบ™เบงเบ™เบ”เบฝเบงเบเบฑเบ™, เปเบ•เปˆเบขเบนเปˆเปƒเบ™เบฅเปเบฒเบ”เบฑเบšเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

เบ‚เบฑเป‰เบ™เบ•เบญเบ™

เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ‚เบฝเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบชเบญเบ‡ strings เปเบกเปˆเบ™ anagrams, เปเบฅเบฐเบเปเบฅเบฐเบ™เบตเบšเปเปˆเบชเปเบฒเบ„เบฑเบ™. เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบžเบฝเบ‡เปเบ•เปˆเบ–เบทเบเบ™เบฑเบš; เบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡ เบซเบผเบทเป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเบงเบฑเบเบ•เบญเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒ.

anagram('finder', 'เป€เบžเบทเปˆเบญเบ™') โ€”> true
anagram('เบชเบฐเบšเบฒเบเบ”เบต', 'เบชเบฐเบšเบฒเบเบ”เบต') โ€”> false

เปƒเบซเป‰เป€เบฎเบปเบฒเบงเบดเป€เบ„เบฒเบฐเปœเป‰เบฒเบงเบฝเบ

เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ™เบตเป‰เปเบกเปˆเบ™เบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบเบงเบ”เป€เบšเบดเปˆเบ‡เปเบ•เปˆเบฅเบฐเบ•เบปเบงเบญเบฑเบเบชเบญเบ™เปƒเบ™เบชเบญเบ‡เป€เบชเบฑเป‰เบ™เบ›เป‰เบญเบ™เป€เบ‚เบปเป‰เบฒเปเบฅเบฐเบ•เบปเบงเป€เบฅเบเบ‚เบญเบ‡เบกเบฑเบ™เปƒเบ™เปเบ•เปˆเบฅเบฐเปเบ–เบง.

finder โ€”> f:1 friend โ€”> f:1
i: 1 r: 1
n:1 i:1
d:1 e:1
e: 1 เบ™: 1
r: 1 เบ‡: 1

เป€เบžเบทเปˆเบญเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™ anagram, เบ—เปˆเบฒเบ™เบ„เบงเบ™เป€เบฅเบทเบญเบเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป€เบŠเบฑเปˆเบ™ JavaScript object literal. เบเบธเบ™เปเบˆเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰เปเบกเปˆเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡เบ•เบปเบงเบญเบฑเบเบชเบญเบ™, เบกเบนเบ™เบ„เปˆเบฒเปเบกเปˆเบ™เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบŠเปเป‰เบฒเบ„เบทเบ™เบ‚เบญเบ‡เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™เบ›เบฐเบˆเบธเบšเบฑเบ™.

เบกเบตเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบญเบทเปˆเบ™เป†:

  • เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเป€เบกเบทเปˆเบญเบ›เบฝเบšเบ—เบฝเบš. เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบ›เปˆเบฝเบ™เบชเบฒเบเบ—เบฑเบ‡เบชเบญเบ‡เป€เบ›เบฑเบ™เบ•เบปเบงเบžเบดเบกเบ™เป‰เบญเบ เบซเบผเบทเบ•เบปเบงเบžเบดเบกเปƒเบซเบเปˆ.
  • เบžเบงเบเป€เบฎเบปเบฒเบเบปเบเป€เบงเบฑเป‰เบ™เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เบฑเบ‡เปเบปเบ”เบˆเบฒเบเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบš. เบ”เบตเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเป€เบ›เบฑเบ™เบ›เบปเบเบเบฐเบ•เบด.

เบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆ

// helper function that builds the
// object to store the data
const buildCharObject = str => {
  const charObj = {}
  for(let char of str.replace(/[^w]/g).toLowerCase()) {
    // if the object has already a key value pair
    // equal to the value being looped over,
    // increase the value by 1, otherwise add
    // the letter being looped over as key and 1 as its value
    charObj[char] = charObj[char] + 1 || 1
  }
  return charObj
}
 
// main function
const anagram = (strA, strB) => {
  // build the object that holds strA data
  const aCharObject = buildCharObject(strA)
  // build the object that holds strB data
  const bCharObject = buildCharObject(strB)
 
  // compare number of keys in the two objects
  // (anagrams must have the same number of letters)
  if(Object.keys(aCharObject).length !== Object.keys(bCharObject).length) {
    return false
  }
  // if both objects have the same number of keys
  // we can be sure that at least both strings
  // have the same number of characters
  // now we can compare the two objects to see if both
  // have the same letters in the same amount
  for(let char in aCharObject) {
    if(aCharObject[char] !== bCharObject[char]) {
      return false
    }
  }
  // if both the above checks succeed,
  // you have an anagram: return true
  return true
}

เบˆเปˆเบฒเบเป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเบเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ Object.keys() เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡. เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบชเบปเปˆเบ‡เบ„เบทเบ™ array เบ—เบตเปˆเบกเบตเบŠเบทเปˆเบซเบผเบทเบเบฐเปเบˆเปƒเบ™เบฅเปเบฒเบ”เบฑเบšเบ”เบฝเบงเบเบฑเบ™เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เบงเบฑเบ”เบ–เบธ. เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ™เบตเป‰ array เบˆเบฐโ€‹เป€เบ›เบฑเบ™โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ™เบตเป‰โ€‹:

['f', 'i', 'n', 'd', 'e', โ€‹โ€‹'r']

เบ”เป‰เบงเบเบงเบดเบ—เบตเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธเป‚เบ”เบเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ” loop เบซเบผเบฒเบ. เปƒเบ™เบšเบฑเบ™เบซเบฒเปƒเบ”เบซเบ™เบถเปˆเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบเบฑเบšเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” .length เป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบ—เบฑเบ‡เบชเบญเบ‡เบชเบฐเบ•เบฃเบดเบ‡เบกเบตเบˆเปเบฒเบ™เบงเบ™เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ”เบฝเบงเบเบฑเบ™ - เบ™เบตเป‰เปเบกเปˆเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡ anagrams.

เบ„เบปเป‰เบ™เบซเบฒเบชเปเบฒเบฅเบฑเบš vowels

เบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบกเบฑเบเบˆเบฐเป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบเบฒเบ™เบชเปเบฒเบžเบฒเบ”.

เบ‚เบฑเป‰เบ™เบ•เบญเบ™

เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ‚เบฝเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเป€เบญเบปเบฒ string เป€เบ›เบฑเบ™ argument เปเบฅเบฐเบชเบปเปˆเบ‡เบ„เบทเบ™เบˆเปเบฒเบ™เบงเบ™ vowels เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™ string.
เบ•เบปเบงเบชเบฐเบซเบผเบฝเบ‡เปเบกเปˆเบ™ โ€œaโ€, โ€œeโ€, โ€œiโ€, โ€œoโ€, โ€œuโ€.

เบ•เบปเบงเบขเปˆเบฒเบ‡:

findVowels('เบชเบฐเบšเบฒเบเบ”เบต') //โ€”> 2
findVowels('why') // โ€”> 0

เบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆ

เบ™เบตเป‰เปเบกเปˆเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”:

const findVowels = str => {
  let count = 0
  const vowels = ['a', 'e', 'i', 'o', 'u']
  for(let char of str.toLowerCase()) {
    if(vowels.includes(char)) {
      count++
    }
  }
  return count
}

เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบˆเบฐเป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเบเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™ .includes(). เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเบ—เบฑเบ‡เบชเบฐเบ•เบฃเบดเบ‡เปเบฅเบฐเบญเบฒเป€เบฃ. เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบงเปˆเบฒ array เบกเบตเบ„เปˆเบฒเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบซเบผเบทเบšเปเปˆ. เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบชเบปเปˆเบ‡เบ„เบทเบ™เป€เบ›เบฑเบ™ true เบ–เป‰เบฒ array เบ›เบฐเบเบญเบšเบกเบตเบ„เปˆเบฒเบ—เบตเปˆเบฅเบฐเบšเบธ, เปเบฅเบฐเบœเบดเบ”เบ–เป‰เบฒเบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰.

เบกเบตเบเบฒเบ™เปเบเป‰เป„เบ‚เบชเบฑเป‰เบ™เบเบงเปˆเบฒเบ•เปเปˆเบเบฑเบšเบšเบฑเบ™เบซเบฒ:

const findVowels = str => {
  const matched = str.match(/[aeiou]/gi)
  return matched ? matches.length : 0
}

เบ™เบตเป‰เปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™ .match() เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš. เบ–เป‰เบฒเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ›เบปเบเบเบฐเบ•เบดเป€เบ›เบฑเบ™เบงเบดเบ—เบตเบเบฒเบ™ argument เป„เบ”เป‰เบ–เบทเบเบžเบปเบšเป€เบซเบฑเบ™เบขเบนเปˆเปƒเบ™เบชเบฐเบ•เบฃเบดเบ‡เบ—เบตเปˆเบฅเบฐเบšเบธ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ„เปˆเบฒเบเบฑเบšเบ„เบทเบ™เปเบกเปˆเบ™ array เบ‚เบญเบ‡เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เบตเปˆเบเบปเบ‡เบเบฑเบ™. เบ”เบต, เบ–เป‰เบฒเบšเปเปˆเบกเบตเบเบฒเบ™เบˆเบฑเบšเบ„เบนเปˆ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ .match() เบเบฑเบšเบ„เบทเบ™ null.

เบŸเบตเป‚เบšเบ™เบฒเบŠเบต

เบงเบฝเบเบ‡เบฒเบ™เบ„เบฅเบฒเบชเบชเบดเบเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เปƒเบ™เบเบฒเบ™เบชเปเบฒเบžเบฒเบ”เปƒเบ™เบฅเบฐเบ”เบฑเบšเบ•เปˆเบฒเบ‡เป†. เบกเบฑเบ™เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒ recall เบงเปˆเบฒเบฅเปเบฒเบ”เบฑเบš Fibonacci เปเบกเปˆเบ™เบŠเบธเบ”เบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเปเบ•เปˆเบฅเบฐเบญเบฑเบ™เบ•เปเปˆเบกเบฒเปเบกเปˆเบ™เบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡เบชเบญเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ•เบปเบงเป€เบฅเบ 0 เบ—เปเบฒเบญเบดเบ”เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ: 1, 1, 2, 3, 5, 8, 13, 21, 34, XNUMX.

เบ‚เบฑเป‰เบ™เบ•เบญเบ™

เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ‚เบฝเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบชเบปเปˆเบ‡เบ„เบทเบ™เบšเบฑเบ™เบ—เบถเบเบ—เบต n เปƒเบ™เบฅเปเบฒเบ”เบฑเบšเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™, เบ”เป‰เบงเบ n เป€เบ›เบฑเบ™เบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเบ–เบทเบเบชเบปเปˆเบ‡เบœเปˆเบฒเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบเบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™.

fibonacci(3) //โ€”> 2

เบงเบฝเบเบ‡เบฒเบ™เบ™เบตเป‰เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบเปˆเบฒเบ‡เบœเปˆเบฒเบ™ loop เป€เบ›เบฑเบ™เบˆเปเบฒเบ™เบงเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡, เบชเบปเปˆเบ‡เบ„เบทเบ™เบ„เปˆเบฒเปƒเบ™เบ•เปเบฒเปเบซเบ™เปˆเบ‡เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก. เบงเบดเบ—เบตเบเบฒเบ™เบ•เบฑเป‰เบ‡เบšเบฑเบ™เบซเบฒเบ™เบตเป‰เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ loops. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰ recursion เปเบ—เบ™, เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบœเบนเป‰เบชเปเบฒเบžเบฒเบ”เบžเปเปƒเบˆเปเบฅเบฐเปƒเบซเป‰เบˆเบธเบ”เบžเบดเป€เบชเบ”เป€เบฅเบฑเบเบ™เป‰เบญเบเปเบเปˆเป€เบˆเบปเป‰เบฒ.

เบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆ

const fibonacci = num => {
  // store the Fibonacci sequence you're going
  // to generate inside an array and
  // initialize the array with the first two
  // numbers of the sequence
  const result = [0, 1]
 
  for(let i = 2; i <= num; i++) {
    // push the sum of the two numbers
    // preceding the position of i in the result array
    // at the end of the result array
    const prevNum1 = result[i - 1]
    const prevNum2 = result[i - 2]
    result.push(prevNum1 + prevNum2)
  }
  // return the last value in the result array
  return result[num]
}

เปƒเบ™ array เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš, เบชเบญเบ‡เบ•เบปเบงเป€เบฅเบเบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบšเบฑเบ™เบˆเบธเบขเบนเปˆเปƒเบ™เบŠเบธเบ”เป€เบžเบฒเบฐเบงเปˆเบฒเปเบ•เปˆเบฅเบฐเบฅเบฒเบเบเบฒเบ™เปƒเบ™เบฅเปเบฒเบ”เบฑเบšเปเบกเปˆเบ™เบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡เบชเบญเบ‡เบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. เปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบšเปเปˆเบกเบตเบชเบญเบ‡เบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบญเบปเบฒเป„เบ›เป€เบญเบปเบฒเบ•เบปเบงเป€เบฅเบเบ•เปเปˆเป„เบ›, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™ loop เบšเปเปˆเบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบžเบงเบเบกเบฑเบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เปเบ•เปˆ, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰, เบชเบญเบ‡เบ•เบปเบงเป€เบฅเบเบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบชเบฐเป€เบซเบกเบต 0 เปเบฅเบฐ 1. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ array เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡.

เบชเปเบฒเบฅเบฑเบš recursion, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™:

const fibonacci = num => {
  // if num is either 0 or 1 return num
  if(num < 2) {
    return num
  }
  // recursion here
  return fibonacci(num - 1) + fibonacci(num - 2)
}

เบžเบงเบเป€เบฎเบปเบฒเบชเบทเบšเบ•เปเปˆเป‚เบ—เบซเบฒ fibonacci (), เบœเปˆเบฒเบ™เบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเบ™เป‰เบญเบเบเบงเปˆเบฒเปเบฅเบฐเบ™เป‰เบญเบเบเบงเปˆเบฒเป€เบ›เบฑเบ™เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบขเบธเบ”เป€เบŠเบปเบฒเป€เบกเบทเปˆเบญเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เปเบกเปˆเบ™ 0 เบซเบผเบท 1.

เบชเบฐเบซเบฅเบธเบš

เบชเปˆเบงเบ™เบซเบผเบฒเบเบญเบฒเบ”เบˆเบฐ, เป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบžเบปเบšเบเบฑเบšเบงเบฝเบเบ‡เบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบฅเป‰เบงเบ–เป‰เบฒเบ—เปˆเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเปเบฒเบžเบฒเบ”เบชเปเบฒเบฅเบฑเบšเบงเบฝเบเบ”เป‰เบฒเบ™เบซเบ™เป‰เบฒเบซเบผเบทเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒ JavaScript (เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบ–เป‰เบฒเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบš junior). เปเบ•เปˆเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบšเปเปˆเป„เบ”เป‰เบžเบปเบšเบžเบงเบเบกเบฑเบ™, เบžเบงเบเบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ” - เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบปเปˆเบงเป„เบ›.

Skillbox เปเบ™เบฐเบ™เปเบฒ:

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™