5 рдард░рд╛рд╡рд┐рдХ JavaScript рдореБрд▓рд╛рдЦрдд рдХрд╛рд░реНрдпреЗ: рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЖрдгрд┐ рдЙрдкрд╛рдп

5 рдард░рд╛рд╡рд┐рдХ JavaScript рдореБрд▓рд╛рдЦрдд рдХрд╛рд░реНрдпреЗ: рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЖрдгрд┐ рдЙрдкрд╛рдп

рдЕрдиреБрд╡рд╛рджрдХрд╛рдХрдбреВрди: рддреБрдордЪреНрдпрд╛рд╕рд╛рдареА рдПрдХ рд▓реЗрдЦ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗрд▓рд╛ рдЖрд╣реЗ рдорд╛рд░рд┐рдпрд╛ рдЕрдБрдЯреЛрдирд┐рдЯрд╛ рдкреЗрд░реНрдирд╛, рдЬреА рд╕рд╛рдорд╛рдиреНрдп JavaScript рдХрд╛рд░реНрдпрд╛рдВрдмрджреНрджрд▓ рдмреЛрд▓рддрд╛рдд, рдмрд╣реБрддреЗрдХрджрд╛ рд╡рд┐рдХрд╛рд╕рдХ рдЕрд░реНрдЬрджрд╛рд░рд╛рдВрдирд╛ рдореБрд▓рд╛рдЦрддреА рджрд░рдореНрдпрд╛рди рдСрдлрд░ рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рд▓реЗрдЦ рдЙрдкрдпреБрдХреНрдд рдард░реЗрд▓, рд╕рд░реНрд╡ рдкреНрд░рдердо, рдирд╡рд╢рд┐рдХреНрдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд╕рд╛рдареА.

рдЯреЗрдХ рдХрдВрдкрдиреНрдпрд╛рдВрдордзреАрд▓ рдореБрд▓рд╛рдЦрддреА рдлрд╛рд░ рдкреВрд░реНрд╡реАрдкрд╛рд╕реВрдирдЪ рдЪрд░реНрдЪреЗрдд рдЖрд╣реЗрдд. рд╣реЗ рдЖрд╢реНрдЪрд░реНрдпрдХрд╛рд░рдХ рдирд╕рд╛рд╡реЗ - рдореБрд▓рд╛рдЦрдд рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ рдЙрддреНрддреАрд░реНрдг рдХреЗрд▓реНрдпрд╛рдиреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЪрд╛рдВрдЧрд▓реА рдиреЛрдХрд░реА рдорд┐рд│рдгреНрдпрд╛рдЪреА рд╕рдВрдзреА рдорд┐рд│рддреЗ. рдкрд░рдВрддреБ рд╣реЗ рдЗрддрдХреЗ рд╕реЛрдкреЗ рдирд╛рд╣реА, рдХрд╛рд░рдг рдЬрдЯрд┐рд▓ рд╕рдорд╕реНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рд╢рд┐рд╡рд╛рдп, рдмрд╣реБрддреЗрдХрджрд╛, рдпрд╛рдкреИрдХреА рдмрд╣реБрддреЗрдХ рдХрд╛рд░реНрдпреЗ рдЕрд░реНрдЬрджрд╛рд░рд╛рдиреЗ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХрд╛рдорд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдирд╕рддрд╛рдд, рдкрд░рдВрддреБ рддрд░реАрд╣реА рддреНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдХрд╛рд╣реАрд╡реЗрд│рд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рддреЗ Google рдХрд┐рдВрд╡рд╛ рдЗрддрд░ рдХреЛрдгрддреНрдпрд╛рд╣реА рд╕реНрддреНрд░реЛрддрд╛рд╢реА рди рддрдкрд╛рд╕рддрд╛ рдмреЛрд░реНрдбрд╡рд░ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓. рд╣реЛрдп, рдкрд░рд┐рд╕реНрдерд┐рддреА рд╣рд│реВрд╣рд│реВ рдмрджрд▓рдд рдЖрд╣реЗ рдЖрдгрд┐ рдХрд╛рд╣реА рдХрдВрдкрдиреНрдпрд╛ рдЕрд╢рд╛ рдореБрд▓рд╛рдЦрддреА рд╕реЛрдбреВрди рджреЗрдд рдЖрд╣реЗрдд, рдкрд░рдВрддреБ рдмрд░реЗрдЪ рдирд┐рдпреЛрдХреНрддреЗ рдЕрдЬреВрдирд╣реА рдпрд╛ рдкрд░рдВрдкрд░реЗрдЪреЗ рдкрд╛рд▓рди рдХрд░рддрд╛рдд. рд╣рд╛ рд▓реЗрдЦ рдард░рд╛рд╡рд┐рдХ JavaScript рдЯрд╛рд╕реНрдХрдЪреНрдпрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рд╕рд╛рдареА рд╕рдорд░реНрдкрд┐рдд рдЖрд╣реЗ рдЬреНрдпрд╛рдЪрд╛ рдЙрдкрдпреЛрдЧ рдиреЛрдХрд░реА рд╢реЛрдзрдгрд╛рд▒реНрдпрд╛рдВрд╕рд╛рдареА рдХрд╛рд░реНрдп рдореНрд╣рдгреВрди рдХреЗрд▓рд╛ рдЬрд╛рддреЛ.

рдЖрдореНрд╣реА рдЖрдард╡рдг рдХрд░реВрди рджреЗрддреЛ: рд╕рд░реНрд╡ Habr рд╡рд╛рдЪрдХрд╛рдВрд╕рд╛рдареА - Habr рдкреНрд░реЛрдореЛ рдХреЛрдб рд╡рд╛рдкрд░реВрди рдХреЛрдгрддреНрдпрд╛рд╣реА рд╕реНрдХрд┐рд▓рдмреЙрдХреНрд╕ рдХреЛрд░реНрд╕рдордзреНрдпреЗ рдирд╛рд╡рдиреЛрдВрджрдгреА рдХрд░рддрд╛рдирд╛ 10 рд░реВрдмрд▓ рд╕рд╡рд▓рдд.

рд╕реНрдХрд┐рд▓рдмреЙрдХреНрд╕ рд╢рд┐рдлрд╛рд░рд╕ рдХрд░рддреЛ: рдкреНрд░реЕрдХреНрдЯрд┐рдХрд▓ рдХреЛрд░реНрд╕ "рдореЛрдмрд╛рдЗрд▓ рдбреЗрд╡реНрд╣рд▓рдкрд░ рдкреНрд░реЛ".

рдореБрдЦреНрдп рдореНрд╣рдгрдЬреЗ рддреБрдордЪреНрдпрд╛ рдореБрд▓рд╛рдЦрддреАрдЪреА рдкреВрд░реНрдг рддрдпрд╛рд░реА рдХрд░рдгреЗ.

рд╣реЛрдп, рдЖрдкрдг рдХрд╛рд░реНрдпреЗ рдкрд╛рд╣рдгреНрдпрд╛рдЖрдзреА, рдореБрд▓рд╛рдЦрддреАрдЪреНрдпрд╛ рддрдпрд╛рд░реАрдЪреНрдпрд╛ рдХрд╛рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдЯрд┐рдкреНрд╕ рдкрд╛рд╣реВ.

рдореБрдЦреНрдп рдЧреЛрд╖реНрдЯ рдЖрдЧрд╛рдК рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╣реЗ. рддреБрдореНрд╣реА рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдЖрдгрд┐ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕ рдХрд┐рддреА рдЪрд╛рдВрдЧрд▓реЗ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рддрд╛ рдпрд╛рдЪреА рдЪрд╛рдЪрдгреА рдШреНрдпрд╛ рдЖрдгрд┐ рддреБрдореНрд╣рд╛рд▓рд╛ рдлрд╛рд░рд╢реА рдкрд░рд┐рдЪрд┐рдд рдирд╕рд▓реЗрд▓реНрдпрд╛ рднрд╛рдЧрд╛рдд рддреБрдордЪреЗ рдЬреНрдЮрд╛рди рд╕реБрдзрд╛рд░рд╛. рдЕрд╕реЗ рдЕрдиреЗрдХ рдСрдирд▓рд╛рдЗрди рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рдЖрд╣реЗрдд рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдореБрд▓рд╛рдЦрддреАрд╕рд╛рдареА рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдд рдорджрдд рдХрд░реВ рд╢рдХрддрд╛рдд. рдЖрдореНрд╣реА рд╕рд▓реНрд▓рд╛ рджреЗрддреЛ geeksforgeeks, рдкреНрд░реЕрдореНрдк, Interviewing.io ╨╕ рдХреЛрдбрд╕рд┐рдЧреНрдирд▓.

рдирд┐рд░реНрдгрдп рдореЛрдареНрдпрд╛рдиреЗ рд╕рд╛рдВрдЧрдгреЗ рд╢рд┐рдХрдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ. рдЕрд░реНрдЬрджрд╛рд░рд╛рдВрдирд╛ рддреБрдореНрд╣реА рдХрд╛рдп рдХрд░рддрд╛ рддреЗ рд╕рд╛рдВрдЧрдгреНрдпрд╛рдЪрд╛ рд╕рд▓реНрд▓рд╛ рджрд┐рд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ рдлрдХреНрдд рдмреЛрд░реНрдбрд╡рд░ рд▓рд┐рд╣реВ рдирдХрд╛ (рдХрд┐рдВрд╡рд╛ рд╕рдВрдЧрдгрдХрд╛рдд рдХреЛрдб рдЯрд╛рдЗрдк рдХрд░рд╛, рд╢рд╛рдВрддрдкрдгреЗ). рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ, рдЬрд░ рддреБрдореНрд╣реА рдХреЛрдбрдордзреНрдпреЗ рдЪреВрдХ рдХреЗрд▓реА рдЕрд╕реЗрд▓, рдкрд░рдВрддреБ рдЙрдкрд╛рдп рд╕рд╛рдорд╛рдиреНрдпрддрдГ рдмрд░реЛрдмрд░ рдЕрд╕реЗрд▓, рддрд░ рддреБрдореНрд╣реА рддреБрдордЪреНрдпрд╛ рдпрд╢рд╛рдЪреА рд╢рдХреНрдпрддрд╛ рд╡рд╛рдврд╡реВ рд╢рдХрддрд╛.

рдЖрдкрдг рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╕рдорд╕реНрдпрд╛ рд╕рдордЬреВрди рдШреЗрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдХрд╛рд╣реА рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ, рдЖрдкрдг рдПрдЦрд╛рджреЗ рдХрд╛рд░реНрдп рд╡рд░рд╡рд░ рд╕рдордЬреВрди рдШреЗрдК рд╢рдХрддрд╛ рдЖрдгрд┐ рдирдВрддрд░ рдЪреБрдХреАрдЪреНрдпрд╛ рдорд╛рд░реНрдЧрд╛рд╡рд░ рдЬрд╛рдК рд╢рдХрддрд╛. рдореБрд▓рд╛рдЦрддрдХрд╛рд░рд╛рд▓рд╛ рдХрд╛рд╣реА рд╕реНрдкрд╖реНрдЯ рдХрд░рдгрд╛рд░реЗ рдкреНрд░рд╢реНрди рд╡рд┐рдЪрд╛рд░рдгреЗ рдпреЛрдЧреНрдп рдард░реЗрд▓.

рддреБрдореНрд╣рд╛рд▓рд╛ PC рд╡рд░ рдирд╡реНрд╣реЗ рддрд░ рд╣рд╛рддрд╛рдиреЗ рдХреЛрдб рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪрд╛ рд╕рд░рд╛рд╡ рдХрд░рд╛рд╡рд╛ рд▓рд╛рдЧреЗрд▓. рдЕрд╕реЗ рдШрдбрддреЗ рдХреА рдореБрд▓рд╛рдЦрддреА рджрд░рдореНрдпрд╛рди рдЕрд░реНрдЬрджрд╛рд░рд╛рд▓рд╛ рдорд╛рд░реНрдХрд░ рдЖрдгрд┐ рд╡реНрд╣рд╛рдИрдЯрдмреЛрд░реНрдб рджрд┐рд▓рд╛ рдЬрд╛рддреЛ, рдЬреЗрдереЗ рдХреЛрдгрддреЗрд╣реА рд╕рдВрдХреЗрдд рдХрд┐рдВрд╡рд╛ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рд╕реНрд╡рд░реВрдкрди рдирд╕рддреЗ. рдЙрдкрд╛рдп рд╢реЛрдзрдд рдЕрд╕рддрд╛рдирд╛, рддреБрдордЪрд╛ рдХреЛрдб рдХрд╛рдЧрджрд╛рдЪреНрдпрд╛ рддреБрдХрдбреНрдпрд╛рд╡рд░ рдХрд┐рдВрд╡рд╛ рдереЗрдЯ рдмреЛрд░реНрдбрд╡рд░ рд▓рд┐рд╣реВрди рдареЗрд╡рдгреЗ рдпреЛрдЧреНрдп рдЖрд╣реЗ. рдЖрдкрдг рд╕рд░реНрд╡рдХрд╛рд╣реА рдЖрдкрд▓реНрдпрд╛ рдбреЛрдХреНрдпрд╛рдд рдареЗрд╡рд▓реНрдпрд╛рд╕, рдЖрдкрдг рдХрд╛рд╣реАрддрд░реА рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рд╡рд┐рд╕рд░реВ рд╢рдХрддрд╛.

JavaScript рдордзреНрдпреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛рд░реНрдпреЗ

рдпрд╛рдкреИрдХреА рдХрд╛рд╣реА рдХрд╛рд░реНрдпреЗ рдХрджрд╛рдЪрд┐рдд рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдзреАрдЪ рдкрд░рд┐рдЪрд┐рдд рдЖрд╣реЗрдд. рддреБрдореНтАНрд╣реА рдПрдХрддрд░ рдореБрд▓рд╛рдЦрддреА рдШреЗрддрд▓реНрдпрд╛ рдЖрд╣реЗрдд рдЬрд┐рдереЗ рддреБрдореНтАНрд╣рд╛рд▓рд╛ рддрддреНрд╕рдо рдХрд╛рд╣реАрддрд░реА рд╕реЛрдбрд╡рд╛рдпрдЪреЗ рд╣реЛрддреЗ рдХрд┐рдВрд╡рд╛ JavaScript рд╢рд┐рдХрддрд╛рдирд╛ рддреНрдпрд╛рд╡рд░ рд╕рд░рд╛рд╡ рдХреЗрд▓рд╛ рдЖрд╣реЗ. рдмрд░рдВ, рдЖрддрд╛ рддреНрдпрд╛рдВрдирд╛ рдкреБрдиреНрд╣рд╛ рд╕реЛрдбрд╡рдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрд▓реА рдЖрд╣реЗ рдЖрдгрд┐ рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреНрдпрд╛ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгрд╛рд╕рд╣.

рдкреЕрд▓рд┐рдВрдбреНрд░реЛрдо

рдкреЕрд▓рд┐рдВрдбреНрд░реЛрдо рд╣рд╛ рдПрдХ рд╢рдмреНрдж, рд╡рд╛рдХреНрдп рдХрд┐рдВрд╡рд╛ рд╡рд░реНрдгрд╛рдВрдЪрд╛ рдХреНрд░рдо рдЖрд╣реЗ рдЬреЛ рдиреЗрд╣рдореАрдЪреНрдпрд╛ рджрд┐рд╢реЗрдиреЗ рдЖрдгрд┐ рд╡рд┐рд░реБрджреНрдз рджрд┐рд╢реЗрдиреЗ рдЕрдЧрджреА рд╕рд╛рд░рдЦрд╛рдЪ рд╡рд╛рдЪрд▓рд╛ рдЬрд╛рддреЛ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, "рдЕрдгреНрдгрд╛" рдПрдХ рдкреЕрд▓рд┐рдВрдбреНрд░реЛрдо рдЖрд╣реЗ, рдкрд░рдВрддреБ "рдЯреЗрдмрд▓" рдЖрдгрд┐ "рдЬреЙрди" рдирд╛рд╣реАрдд.

рд╕реНрдЯреЗрдЬрд┐рдВрдЧ

рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рджрд┐рд▓реА; рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХ рдлрдВрдХреНрд╢рди рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреЕрд▓рд┐рдВрдбреНрд░реЛрдо рдЕрд╕рд▓реНрдпрд╛рд╕ рд╕рддреНрдп рдЖрдгрд┐ рдирд╕рд▓реНрдпрд╛рд╕ рдЦреЛрдЯреЗ рдкрд░рдд рдпреЗрдК рджреЗрддреЗ. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд░рд┐рдХреНрдд рд╕реНрдерд╛рдиреЗ рдЖрдгрд┐ рд╡рд┐рд░рд╛рдордЪрд┐рдиреНрд╣реЗ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

palindrome('racecar') === рдЦрд░реЗ
рдкреЕрд▓рд┐рдВрдбреНрд░реЛрдо('рдЯреЗрдмрд▓') === рдЦреЛрдЯреЗ

рдЪрд▓рд╛ рдХрд╛рд░реНрдпрд╛рдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реВрдпрд╛

рдпреЗрдереЗ рдореБрдЦреНрдп рдХрд▓реНрдкрдирд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЙрд▓рдЯ рдХрд░рдгреЗ рдЖрд╣реЗ. рдЬрд░ "рд░рд┐рд╡реНрд╣рд░реНрд╕" рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореВрд│ рд╕реНрдЯреНрд░рд┐рдВрдЧрд╢реА рдкреВрд░реНрдгрдкрдгреЗ рдПрдХрд╕рд╛рд░рдЦреА рдЕрд╕реЗрд▓, рддрд░ рдЖрдореНрд╣рд╛рд▓рд╛ рдкреЕрд▓рд┐рдВрдбреНрд░реЛрдо рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓рд╛ рдЖрд╣реЗ рдЖрдгрд┐ рдлрдВрдХреНрд╢рди рд╕рддреНрдпрд╛рдд рдкрд░рдд рдЖрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ. рдирд╕рд▓реНрдпрд╛рд╕, рдЦреЛрдЯреЗ.

рдирд┐рд░реНрдгрдп

рдкреЕрд▓рд┐рдВрдбреНрд░реЛрдо рд╕реЛрдбрд╡рдгрд╛рд░рд╛ рдХреЛрдб рдпреЗрдереЗ рдЖрд╣реЗ.

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('')
}

рдкрд╣рд┐рд▓реА рдкрд╛рдпрд░реА рдореНрд╣рдгрдЬреЗ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧрдордзреАрд▓ рдЕрдХреНрд╖рд░реЗ рд▓реЛрдЕрд░рдХреЗрд╕рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рдгреЗ. рд╣реА рд╣рдореА рдЖрд╣реЗ рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реНрд╡рддрдГ рдкрд╛рддреНрд░рд╛рдВрдЪреА рддреБрд▓рдирд╛ рдХрд░реЗрд▓, рдХреЗрд╕ рдХрд┐рдВрд╡рд╛ рдЗрддрд░ рдХрд╢рд╛рдЪреАрд╣реА рдирд╛рд╣реА.

рджреБрд╕рд░реА рдкрд╛рдпрд░реА рдореНрд╣рдгрдЬреЗ рд░реЗрд╖рд╛ рдЙрд▓рдЯ рдХрд░рдгреЗ. рд╣реЗ рдХрд░рдгреЗ рдХрдареАрдг рдирд╛рд╣реА: рддреБрдореНрд╣рд╛рд▓рд╛ рддреЗ .split() рдкрджреНрдзрдд (рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рд╛рдпрдмреНрд░рд░реА) рд╡рд╛рдкрд░реВрди рдЕреЕрд░реЗрдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓. рдордЧ рдЖрдкрдг .reverse() (Array library) рд╡рд╛рдкрд░реВрди рдЕтАНреЕрд░реЗ рдЙрд▓рдЯ рдХрд░рддреЛ. рд╢реЗрд╡рдЯрдЪреА рдкрд╛рдпрд░реА рдореНрд╣рдгрдЬреЗ .join() (рдЕреЕрд░реЗ рд▓рд╛рдпрдмреНрд░рд░реА) рд╡рд╛рдкрд░реВрди рд░рд┐рд╡реНрд╣рд░реНрд╕ рдЕреЕрд░реЗрд▓рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧрдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рдгреЗ.

рдЖрддрд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд тАЬрд░рд┐рд╡реНрд╣рд░реНрд╕тАЭ рд╕реНрдЯреНрд░рд┐рдВрдЧрдЪреА рдореВрд│ рд╕реНрдЯреНрд░рд┐рдВрдЧрд╢реА рддреБрд▓рдирд╛ рдХрд░рд╛рдпрдЪреА рдЖрд╣реЗ, рдирд┐рдХрд╛рд▓ рдЦрд░рд╛ рдХрд┐рдВрд╡рд╛ рдЦреЛрдЯрд╛ рдЖрд╣реЗ.

FizzBuzz

рдореБрд▓рд╛рдЦрддреАрдВрдордзреАрд▓ рд╕рд░реНрд╡рд╛рдд рд▓реЛрдХрдкреНрд░рд┐рдп рдХрд╛рд░реНрдпрд╛рдВрдкреИрдХреА рдПрдХ.

рд╕реНрдЯреЗрдЬрд┐рдВрдЧ

рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХ рдлрдВрдХреНрд╢рди рд▓рд┐рд╣рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ рдЬреЗ рдХрдиреНрд╕реЛрд▓рд╡рд░ 1 рддреЗ n рдкрд░реНрдпрдВрдд рдЕрдВрдХ рдореБрджреНрд░рд┐рдд рдХрд░рддреЗ, рдЬреЗрдереЗ n рд╣реЗ рдкреВрд░реНрдгрд╛рдВрдХ рдЖрд╣реЗ рдЬреЗ рдлрдВрдХреНрд╢рди рдЦрд╛рд▓реАрд▓ рдЕрдЯреАрдВрд╕рд╣ рдкреЕрд░рд╛рдореАрдЯрд░ рдореНрд╣рдгреВрди рдШреЗрддреЗ:

  • 3 рдЪреНрдпрд╛ рдкрдЯрд╛рдВрдРрд╡рдЬреА рдлрд┐рдЭ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рд╛;
  • 5 рдЪреНрдпрд╛ рдкрдЯреАрдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдРрд╡рдЬреА рдЖрдЙрдЯрдкреБрдЯ рдмрдЭ;
  • 3 рдЖрдгрд┐ 5 рджреЛрдиреНрд╣реАрдЪреНрдпрд╛ рдкрдЯреАрдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рдВрдЦреНрдпрд╛рдВрдРрд╡рдЬреА fizzbuzz рдЖрдЙрдЯрдкреБрдЯ.

рдЙрджрд╛рд╣рд░рдг:

Fizzbuzz(5)

рдкрд░рд┐рдгрд╛рдо

// реиреж
// реиреж
// рдлрд┐рдЭ
// реиреж
//buzz

рдЪрд▓рд╛ рдХрд╛рд░реНрдпрд╛рдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реВрдпрд╛

рдпреЗрдереЗ рдореБрдЦреНрдп рдЧреЛрд╖реНрдЯ рдореНрд╣рдгрдЬреЗ JavaScript рд╡рд╛рдкрд░реВрди рдЧреБрдгрд╛рдХрд╛рд░ рд╢реЛрдзрдгреНрдпрд╛рдЪрд╛ рдорд╛рд░реНрдЧ. рд╣реЗ рдореЙрдбреНрдпреВрд▓рд╕ рдСрдкрд░реЗрдЯрд░ рдХрд┐рдВрд╡рд╛ рдЙрд░реНрд╡рд░рд┐рдд - % рд╡рд╛рдкрд░реВрди рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рджреЛрди рд╕рдВрдЦреНрдпрд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛рдирд╛ рдЙрд░реНрд╡рд░рд┐рдд рджрд░реНрд╢рд╡реВ рджреЗрддреЗ. рдЬрд░ рдЙрд░рд▓реЗрд▓реА рд╕рдВрдЦреНрдпрд╛ 0 рдЕрд╕реЗрд▓, рддрд░ рдпрд╛рдЪрд╛ рдЕрд░реНрде рдкрд╣рд┐рд▓реА рд╕рдВрдЦреНрдпрд╛ рджреБрд╕рд▒реНрдпрд╛рдЪрд╛ рдЧреБрдгрд╛рдХрд╛рд░ рдЖрд╣реЗ.

резреи% рел // реи -> резреи рд╣рд╛ рел рдЪрд╛ рдЧреБрдгрд╛рдХрд╛рд░ рдирд╛рд╣реА
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...else рд╕реНрдЯреЗрдЯрдореЗрдВрдЯрдЪреНрдпрд╛ рдХреНрд░рдорд╛рдХрдбреЗ рд▓рдХреНрд╖ рджреЗрдгреЗ рдпреЛрдЧреНрдп рдЖрд╣реЗ: рджреБрд╣реЗрд░реА рдЕрдЯреА (&&) рдиреЗ рд╕реБрд░реВ рдХрд░рд╛ рдЖрдгрд┐ рдЬреЗрдереЗ рдЕрдиреЗрдХ рд╕рдВрдЦреНрдпрд╛ рд╕рд╛рдкрдбрд▓реНрдпрд╛ рдирд╛рд╣реАрдд рдЕрд╢рд╛ рдХреЗрд╕рд╕рд╣ рд╕рдорд╛рдкреНрдд рдХрд░рд╛. рдкрд░рд┐рдгрд╛рдореА, рдЖрдореНрд╣реА рд╕рд░реНрд╡ рдкрд░реНрдпрд╛рдп рдХрд╡реНрд╣рд░ рдХрд░рддреЛ.

рдЕреЕрдирд╛рдЧреНрд░рд╛рдо

рд╣реЗ рдЕрд╢рд╛ рд╢рдмреНрджрд╛рдЪреЗ рдирд╛рд╡ рдЖрд╣реЗ рдЬреНрдпрд╛рдордзреНрдпреЗ рджреБрд╕рд░реНтАНрдпрд╛ рд╢рдмреНрджрд╛рдЪреА рд╕рд░реНрд╡ рдЕрдХреНрд╖рд░реЗ рд╕рдорд╛рди рд╕рдВрдЦреНрдпреЗрдд рдЖрд╣реЗрдд, рдкрд░рдВрддреБ рднрд┐рдиреНрди рдХреНрд░рдорд╛рдиреЗ рдЖрд╣реЗрдд.

рд╕реНрдЯреЗрдЬрд┐рдВрдЧ

рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдПрдХ рдлрдВрдХреНрд╢рди рд▓рд┐рд╣рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ рдЬреЗ рджреЛрди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЕреЕрдирд╛рдЧреНрд░рд╛рдо рдЖрд╣реЗрдд рдХреА рдирд╛рд╣реА рд╣реЗ рддрдкрд╛рд╕рддреЗ рдЖрдгрд┐ рдХреЗрд╕ рдХрд╛рд╣реА рдлрд░рдХ рдкрдбрдд рдирд╛рд╣реА. рдлрдХреНрдд рд╡рд░реНрдг рдореЛрдЬрд▓реЗ рдЬрд╛рддрд╛рдд; рдореЛрдХрд│реА рдЬрд╛рдЧрд╛ рдХрд┐рдВрд╡рд╛ рд╡рд┐рд░рд╛рдордЪрд┐рдиреНрд╣реЗ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрддрд▓реЗрд▓реА рдирд╛рд╣реАрдд.

anagram('рд╢реЛрдзрдХ', 'рдорд┐рддреНрд░') тАФ> рдЦрд░реЗ
anagram('hello', 'bye') тАФ> рдЕрд╕рддреНрдп

рдЪрд▓рд╛ рдХрд╛рд░реНрдпрд╛рдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реВрдпрд╛

рдпреЗрдереЗ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрдгреНрдпрд╛рд╕рд╛рд░рдЦреА рдорд╣рддреНрддреНрд╡рд╛рдЪреА рдЧреЛрд╖реНрдЯ рдореНрд╣рдгрдЬреЗ рджреЛрди рдЗрдирдкреБрдЯ рдУрд│реАрдВрдордзреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рдЕрдХреНрд╖рд░ рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рдУрд│реАрддреАрд▓ рддреНрдпрд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рддрдкрд╛рд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рд╢реЛрдзрдХ тАФ> f: 1 рдорд┐рддреНрд░ тАФ> f: 1
i: 1 рдЖрд░: 1
n: 1 i: 1
d: 1 e: 1
e: 1 n: 1
r: 1 d: 1

рдЕреЕрдирд╛рдЧреНрд░рд╛рдо рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА JavaScript рдСрдмреНрдЬреЗрдХреНрдЯ рд▓рд┐рдЯрд░рд▓ рд╕рд╛рд░рдЦреА рд░рдЪрдирд╛ рдирд┐рд╡рдбрд╛рд╡реА. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд рдореБрдЦреНрдп рдореНрд╣рдгрдЬреЗ рдЕрдХреНрд╖рд░рд╛рдЪреЗ рд╡рд░реНрдг, рдореВрд▓реНрдп рдореНрд╣рдгрдЬреЗ рд╡рд░реНрддрдорд╛рди рдУрд│реАрддреАрд▓ рддреНрдпрд╛рдЪреНрдпрд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддреАрдЪреА рд╕рдВрдЦреНрдпрд╛.

рдЗрддрд░ рдЕрдЯреА рдЖрд╣реЗрдд:

  • рддреБрд▓рдирд╛ рдХрд░рддрд╛рдирд╛ рдЕрдХреНрд╖рд░рд╛рдВрдЪреЗ рдХреЗрд╕ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрддрд▓реЗ рдЬрд╛рдд рдирд╛рд╣реА рдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЖрдореНрд╣реА рджреЛрдиреНрд╣реА рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рд▓реЛрдЕрд░ рдХрд┐рдВрд╡рд╛ рдЕрдкреНрдкрд░ рдХреЗрд╕рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддреЛ.
  • рдЖрдореНрд╣реА рд╕рд░реНрд╡ рдЧреИрд░-рд╡рд░реНрдгрд╛рдВрдирд╛ рддреБрд▓рдирд╛рдордзреВрди рд╡рдЧрд│рддреЛ. рд╕реЛрдмрдд рдХрд╛рдо рдХрд░рдгреЗ рдЙрддреНрддрдо рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддреА.

рдирд┐рд░реНрдгрдп

// 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() рд╡рд░реАрд▓ рд╕реНрдирд┐рдкреЗрдЯ рдордзреНрдпреЗ. рд╣реА рдкрджреНрдзрдд рдСрдмреНрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рджрд┐рд╕рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдХреНрд░рдорд╛рдиреЗ рдирд╛рд╡реЗ рдХрд┐рдВрд╡рд╛ рдХреА рдЕрд╕рд▓реЗрд▓реА рдЕреЕрд░реЗ рдкрд░рдд рдХрд░рддреЗ. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд рдЕреЕрд░реЗ рдЕрд╕реЗ рдЕрд╕реЗрд▓:

['f', 'i', 'n', 'd', 'e', тАЛтАЛ'r']

рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рд▓реВрдк рди рдХрд░рддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯрдЪреЗ рдЧреБрдгрдзрд░реНрдо рдорд┐рд│рддрд╛рдд. рдПрдЦрд╛рджреНрдпрд╛ рд╕рдорд╕реНрдпреЗрдордзреНрдпреЗ, рджреЛрдиреНрд╣реА рд╕реНрдЯреНрд░рд┐рдВрдЧрдордзреНрдпреЗ рд╕рдорд╛рди рд╡рд░реНрдг рдЖрд╣реЗрдд рдХреА рдирд╛рд╣реА рд╣реЗ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА .length рдЧреБрдгрдзрд░реНрдорд╛рд╕рд╣ рд╣реА рдкрджреНрдзрдд рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛ - рд╣реЗ рдЕреЕрдирд╛рдЧреНрд░рд╛рдордЪреЗ рдПрдХ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдЖрд╣реЗ.

рд╕реНрд╡рд░рд╛рдВрдЪрд╛ рд╢реЛрдз рдШреНрдпрд╛

рдмрд░реНтАНрдпрд╛рдЪрджрд╛ рдореБрд▓рд╛рдЦрддреАрдВрдордзреНрдпреЗ рд╕рдореЛрд░ рдпреЗрдгрд╛рд░реЗ рд╕реЛрдкреЗ рдХрд╛рд░реНрдп.

рд╕реНрдЯреЗрдЬрд┐рдВрдЧ

рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрд╕реЗ рдлрдВрдХреНрд╢рди рд▓рд┐рд╣рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ рдЬреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧрд▓рд╛ рд╡рд┐рддрд░реНрдХ рдореНрд╣рдгреВрди рдШреЗрддреЗ рдЖрдгрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧрдордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕реНрд╡рд░рд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдкрд░рдд рдХрд░рддреЗ.
рд╕реНрд╡рд░ рдЖрд╣реЗрдд тАЬaтАЭ, тАЬeтАЭ, тАЬiтАЭ, тАЬoтАЭ, тАЬuтАЭ.

рдЙрджрд╛рд╣рд░рдг:

findVowels('hello') // тАФ> реи
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() рдкрджреНрдзрддреАрдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рдХрдбреЗ рд▓рдХреНрд╖ рджреЗрдгреЗ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ. рд╣реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЖрдгрд┐ рдЕреЕрд░реЗ рджреЛрдиреНрд╣реАрд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ. рдЕтАНреЕрд░реЗрдордзреНрдпреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓реНрдп рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рд╣реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рд╡реЗ. рдЕтАНреЕрд░реЗрдордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдореВрд▓реНрдп рдЕрд╕рд▓реНрдпрд╛рд╕ рд╣реА рдкрджреНрдзрдд рд╕рддреНрдп рдорд┐рд│рд╡рддреЗ рдЖрдгрд┐ рдирд╕рд▓реНрдпрд╛рд╕ рддреА рдЕрд╕рддреНрдп рджрд░реНрд╢рд╡рддреЗ.

рд╕рдорд╕реНрдпреЗрд╡рд░ рдПрдХ рд▓рд╣рд╛рди рдЙрдкрд╛рдп рдЖрд╣реЗ:

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

рд╣реЗ .match() рдкрджреНрдзрдд рд╡рд╛рдкрд░рддреЗ, рдЬреА рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдо рд╢реЛрдз рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. рдореЗрдердб рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯ рдореНрд╣рдгреВрди рд░реЗрдЧреНрдпреБрд▓рд░ рдПрдХреНрд╕реНрдкреНрд░реЗрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧрдордзреНрдпреЗ рдЖрдврд│рд▓реНрдпрд╛рд╕, рд░рд┐рдЯрд░реНрди рд╡реНрд╣реЕрд▓реНрдпреВ рд╣реЗ рдЬреБрд│рдгрд╛рд░реНтАНрдпрд╛ рд╡рд░реНрдгрд╛рдВрдЪреА рдЕреЕрд░реЗ рдЕрд╕рддреЗ. рдмрд░рдВ, рдЬрд░ рдХрд╛рд╣реА рдЬреБрд│рдгреНрдпрд╛ рдирд╕рддреАрд▓, рддрд░ .match() рд╢реВрдиреНрдп рдкрд░рдд рдХрд░реЗрд▓.

рдлрд┐рдмреЛрдирд╛рдЪреА

рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдХрд╛рд░реНрдп рдЬреЗ рд╡рд┐рд╡рд┐рдз рд╕реНрддрд░рд╛рдВрд╡рд░реАрд▓ рдореБрд▓рд╛рдЦрддреАрдВрдордзреНрдпреЗ рдЖрдврд│реВ рд╢рдХрддреЗ. рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ рдХреА рдлрд┐рдмреЛрдирд╛рдЪреА рдЕрдиреБрдХреНрд░рдо рд╣реА рд╕рдВрдЦреНрдпрд╛рдВрдЪреА рдорд╛рд▓рд┐рдХрд╛ рдЖрд╣реЗ рдЬрд┐рдереЗ рдкреНрд░рддреНрдпреЗрдХ рддреНрдпрд╛рдирдВрддрд░рдЪреА рдПрдХ рдорд╛рдЧреАрд▓ рджреЛрдирдЪреА рдмреЗрд░реАрдЬ рдЖрд╣реЗ. рддрд░, рдкрд╣рд┐рд▓реЗ рджрд╣рд╛ рдЕрдВрдХ рдпрд╛рд╕рд╛рд░рдЦреЗ рджрд┐рд╕рддрд╛рдд: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34.

рд╕реНрдЯреЗрдЬрд┐рдВрдЧ

рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХ рдлрдВрдХреНрд╢рди рд▓рд┐рд╣рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ рдЬреЗ рдПрдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд░рдорд╛рдиреЗ n рд╡реНрдпрд╛ рд░реЗрдХреЙрд░реНрдб рдкрд░рдд рдХрд░реЗрд▓, n рд╣реА рд╕рдВрдЦреНрдпрд╛ рдЖрд╣реЗ рдЬреА рдлрдВрдХреНрд╢рдирд▓рд╛ рд╡рд┐рддрд░реНрдХ рдореНрд╣рдгреВрди рджрд┐рд▓реА рдЬрд╛рддреЗ.

рдлрд┐рдмреЛрдирд╛рдЪреА(рей) // тАФ> реи

рдпрд╛ рдХрд╛рд░реНрдпрд╛рдордзреНрдпреЗ рддрд░реНрдХрд╛рдордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд▓реВрдкрдордзреВрди рдЪрд╛рд▓рдгреЗ, рдпреЛрдЧреНрдп рд╕реНрдерд╛рдирд╛рд╡рд░ рдореВрд▓реНрдп рдкрд░рдд рдХрд░рдгреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ. рд╕рдорд╕реНрдпрд╛ рдорд╛рдВрдбрдгреНрдпрд╛рдЪреНрдпрд╛ рдпрд╛ рдорд╛рд░реНрдЧрд╛рд╕рд╛рдареА рд▓реВрдк рд╡рд╛рдкрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рддреНрдпрд╛рдРрд╡рдЬреА рддреБрдореНрд╣реА рдкреБрдирд░рд╛рд╡реГрддреНрддреАрдЪрд╛ рд╡рд╛рдкрд░ рдХреЗрд▓реНрдпрд╛рд╕, рддреЗ рдореБрд▓рд╛рдЦрддрдХрд╛рд░рд╛рд▓рд╛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░реВ рд╢рдХрддреЗ рдЖрдгрд┐ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рд╣реА рдЕрддрд┐рд░рд┐рдХреНрдд рдЧреБрдг рджреЗрдК рд╢рдХрддреЗ.

рдирд┐рд░реНрдгрдп

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]
}

рдкрд░рд┐рдгрд╛рдо рдЕреЕрд░реЗрдордзреНрдпреЗ, рдкрд╣рд┐рд▓реНрдпрд╛ рджреЛрди рдХреНрд░рдорд╛рдВрдХ рдорд╛рд▓рд┐рдХреЗрдд рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗрдд рдХрд╛рд░рдг рдЕрдиреБрдХреНрд░рдорд╛рддреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдВрдж рд╣реА рдорд╛рдЧреАрд▓ рджреЛрди рд╕рдВрдЦреНрдпрд╛рдВрдЪреА рдмреЗрд░реАрдЬ рдЖрд╣реЗ. рдЕрдЧрджреА рд╕реБрд░реБрд╡рд╛рддреАрд╕ рдкреБрдвреАрд▓ рдХреНрд░рдорд╛рдВрдХ рдорд┐рд│рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рджреЛрди рдХреНрд░рдорд╛рдВрдХ рдШреЗрддрд▓реЗ рдЬрд╛рдК рд╢рдХрдд рдирд╛рд╣реАрдд, рддреНрдпрд╛рдореБрд│реЗ рд▓реВрдк рддреНрдпрд╛рдВрдирд╛ рдЖрдкреЛрдЖрдк рдирд┐рд░реНрдорд╛рдг рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА. рдкрд░рдВрддреБ, рдЖрдореНрд╣рд╛рд▓рд╛ рдорд╛рд╣реАрдд рдЖрд╣реЗ рдХреА, рдкрд╣рд┐рд▓реЗ рджреЛрди рдЕрдВрдХ рдиреЗрд╣рдореА 0 рдЖрдгрд┐ 1 рдЕрд╕рддрд╛рдд. рддреНрдпрд╛рдореБрд│реЗ, рддреБрдореНрд╣реА рдкрд░рд┐рдгрд╛рдо рдЕреЕрд░реЗ рд╕реНрд╡рд╣рд╕реНрддреЗ рд╕реБрд░реВ рдХрд░реВ рд╢рдХрддрд╛.

рдкреБрдирд░рд╛рд╡реГрддреНрддреАрд╕рд╛рдареА, рд╕рд░реНрд╡ рдХрд╛рд╣реА рдПрдХрд╛рдЪ рд╡реЗрд│реА рд╕реЛрдкреЗ рдЖрдгрд┐ рдЕрдзрд┐рдХ рдХреНрд▓рд┐рд╖реНрдЯ рдЖрд╣реЗ:

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 рдбреЗрд╡реНрд╣рд▓рдкрд░ рдЬреЙрдмрд╕рд╛рдареА рдореБрд▓рд╛рдЦрдд рдШреЗрддрд▓реА рдЧреЗрд▓реА рдЕрд╕реЗрд▓ (рд╡рд┐рд╢реЗрд╖рддрдГ рдЬрд░ рддреЗ рдХрдирд┐рд╖реНрда рд╕реНрддрд░рд╛рд╡рд░ рдЕрд╕реЗрд▓ рддрд░) рддреБрдореНрд╣рд╛рд▓рд╛ рдпрд╛рдкреИрдХреА рдХреЛрдгрддреАрд╣реА рдХрд╛рд░реНрдпреЗ рдЖрдзреАрдЪ рдЖрд▓реА рдЕрд╕рддреАрд▓. рдкрд░рдВрддреБ рдЬрд░ рддреБрдореНрд╣реА рддреНрдпрд╛рдВрдирд╛ рднреЗрдЯрд▓реЗ рдирд╕рд╛рд▓, рддрд░ рддреЗ рднрд╡рд┐рд╖реНрдпрд╛рдд рдЙрдкрдпреЛрдЧреА рдард░рддреАрд▓ - рдХрд┐рдорд╛рди рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдХрд╛рд╕рд╛рд╕рд╛рдареА.

рд╕реНрдХрд┐рд▓рдмреЙрдХреНрд╕ рд╢рд┐рдлрд╛рд░рд╕ рдХрд░рддреЛ:

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛