рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдЬреЛ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдХреМрди рд╕рд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдкрд╣рд▓реЗ рдПрдХ рд╣реИ: | рдпрд╣рд╛рдБ рджреВрд╕рд░рд╛ рд╣реИ: |
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] .filter(int => isEven(int)) .filter(int => isBiggerThan(3, int)) .map(int => int + 1) .map(int => toChar(int)) .filter(char => !isVowel(char)) .join('') // 'fhjl'
| [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] .filter(isEven) .filter(isBiggerThan(3)) .map(plus(1)) .map(toChar) .filter(not(isVowel)) .join('') |
"рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рдкрдардиреАрдпрддрд╛ рд╣реИ," рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓реЗрдЦрдХ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдПрдХ рдЕрдиреБрд╡рд╛рдж рдЖрдЬ рд╣рдо рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕рдВрдкреВрд░реНрдг рдмрд┐рдВрджреБ
filter()
рдФрд░
map()
рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рддрд░реНрдХ рдореЗрдВ рд╣реИред

рдЖрдЬ рд╣рдо рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рдорд╛рди рдХреЛрдб рдХреЛ рд░реАрд╕рд╛рдпрдХрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рддрд╛рдХрд┐ рдпрд╣ рджреВрд╕рд░реЗ рд╕реЗ рдХреЛрдб рдХреА рддрд░рд╣ рджрд┐рдЦреЗред рд▓реЗрдЦ рдХрд╛ рд▓реЗрдЦрдХ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЖрдк рдПрдХ рдирдП рддрд░реАрдХреЗ рд╕реЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрдВрдЧреЗ рдФрд░ рдЖрдк рдЗрд╕ рдмрд╛рдд рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЗрд╕рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереАред
рд╕рд╛рдзрд╛рд░рдг рдХрд╛рд░реНрдп
рдПрдХ рд╕рд╛рдзрд╛рд░рдг
sum()
рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдЗрд╕рдореЗрдВ рджрд┐рдП рдЧрдП рдирдВрдмрд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ:
const sum = (a, b) => a + b sum(1, 2)
рд╣рдо рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВрдЧреЗ, рдирдП рдлрдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо
csum()
:
const csum = a => b => a + b csum(1)(2)
рдЗрд╕рдХрд╛ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдореВрд▓ рдПрдХ, рдХреЗрд╡рд▓ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдирдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреИрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН,
sum()
рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдмрд╛рд░ рдореЗрдВ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддрд╛ рд╣реИ, рдФрд░
csum()
рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рд╣реА рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ,
csum()
рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рджреЛ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд▓рд╛рддреЗ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрдм
csum()
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕реЗ рдирдВрдмрд░ 1 рдкрд╛рд╕ рдХрд░рдирд╛ рдФрд░ рдХреБрдЫ рдирд╣реАрдВ:
csum(1)
csum()
рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреА рдХреЙрд▓ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЕрдкрдиреЗ рд╕рд╛рдорд╛рдиреНрдп рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди
csum()
рдХреЛ
csum()
рдЧрдП рджреВрд╕рд░реЗ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рддрд░реНрдХ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рддрд░реНрдХ рдореЗрдВ рдПрдХ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ
plusOne()
:
const plusOne = csum(1) plusOne(2)
рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдЖрдк рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдорд╛рди рд▓реЗрдВ рдХрд┐
map()
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд░рдгреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рджрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреВрд░реНрдгрд╛рдВрдХ рд╕рд░рдгреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдПрдХ рдирдИ рд╕рд░рдгреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдореЗрдВ 1 рд╕реЗ рд╡реГрджреНрдзрд┐ рд╣реБрдИ рд╣реИ), рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
[1, 2, 3].map(x => x + 1)
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЬреЛ рдХреБрдЫ рднреА рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЙрд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдлрд╝рдВрдХреНрд╢рди
x => x + 1
рдкреВрд░реНрдгрд╛рдВрдХ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдкреВрд░реНрдгрд╛рдВрдХ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЙрд╕рдХреЗ рдмрд╛рдж рдЖрдиреЗ рд╡рд╛рд▓реЗ рдирдВрдмрд░ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ
plusOne()
рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
[1, 2, 3].map(x => plusOne(x))
рдпрд╣рд╛рдВ рдпрд╣ рдзреАрдорд╛ рдХрд░рдирд╛ рдФрд░ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╕рд╛рд░реНрдердХ рд╣реИред рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди
x => plusOne(x)
рдФрд░
plusOne
(рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдХреЗ рдмрд╛рдж рдХреЛрдИ рдмреНрд░реИрдХреЗрдЯ рдирд╣реАрдВ рд╣реИрдВ) рдмрд░рд╛рдмрд░ рд╣реИрдВред рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдиреНрдп
otherPlusOne()
рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ
otherPlusOne()
рдлрд╝рдВрдХреНрд╢рди:
const otherPlusOne = x => plusOne(x) otherPlusOne(1)
рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо
plusOne()
рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдХреЙрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЬреИрд╕рд╛ рд╣реА рд╣реЛрдЧрд╛:
plusOne(1)
рдЙрд╕реА рдХрд╛рд░рдг рд╕реЗ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреА рд╕рдорд╛рдирддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдкрд╣рд▓реЗ рд╡рд╛рд▓рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдкрд╣рд▓реЗ рд╣реА рджреЗрдЦ рдЪреБрдХреЗ рд╣реИрдВ:
[1, 2, 3].map(x => plusOne(x))
рдпрд╣рд╛рдБ рджреВрд╕рд░рд╛ рд╣реИ:
[1, 2, 3].map(plusOne)
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐
plusOne()
рдлрд╝рдВрдХреНрд╢рди рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛:
const plusOne = csum(1)
рдпрд╣ рд╣рдореЗрдВ
map()
рд╕рд╛рде рд╣рдорд╛рд░реЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
[1, 2, 3].map(csum(1))
рдЕрдм, рдЙрд╕реА рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП,
isBiggerThan()
рдлрд╝рдВрдХреНрд╢рди
isBiggerThan()
ред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рдкрдврд╝реЗрдВред рдпрд╣
filter()
рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЕрдирд╛рд╡рд╢реНрдпрдХ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдЧрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдХреЛрдб рдХреЛ рдЗрд╕ рд░реВрдк рдореЗрдВ рд▓рд╛рдПрдВ:
const isBiggerThan = (threshold, int) => int > threshold [1, 2, 3, 4].filter(int => isBiggerThan(3, int))
рдлрд┐рд░, рд╕рдм рдХреБрдЫ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╡рд╣ рдХреЛрдб рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдиреЗ рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рджреЗрдЦрд╛ рдерд╛:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] .filter(isEven) .filter(isBiggerThan(3)) .map(plus(1)) .map(toChar) .filter(not(isVowel)) .join('')
рдЕрдм рд╣рдо рджреЛ рд╕рд░рд▓ рдирд┐рдпрдореЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╢реИрд▓реА рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
рдирд┐рдпрдо рд╕рдВрдЦреНрдпрд╛ рез
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛ рдирд┐рд░реНрдорд╛рдг рдмрд░рд╛рдмрд░ рд╣реИрдВ:
[тАж].map(x => fnc(x)) [тАж].map(fnc)
рдирд┐рдпрдо рд╕рдВрдЦреНрдпрд╛ реи
рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рддрд░реНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
const fnc = (x, y, z) => тАж [тАж].map(x => fnc(x, y, z)) const fnc = (y, z) => x => тАж [тАж].map(fnc(y, z))
рдпрджрд┐ рдЖрдкрдиреЗ рд╕реНрд╡рдпрдВ
isBiggerThan()
рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрд╛ рд╣реИ, рддреЛ рдЖрдк рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реЗ рдЧреБрдЬрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ 3 рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
const isBiggerThan = (threshold, int) => int > threshold [тАж].filter(int => isBiggerThan(3, int))
рдЕрдм рд╣рдо
isBiggerThan()
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ
isBiggerThan()
рддрд╛рдХрд┐ рдЗрд╕реЗ
filter()
рд╡рд┐рдзрд┐ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдФрд░
int=>
рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ:
const isBiggerThan = threshold => int => int > threshold [тАж].map(isBiggerThan(3))
рд╡реНрдпрд╛рдпрд╛рдо
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЯреБрдХрдбрд╝рд╛ рд╣реИ:
const keepGreatestChar = (char1, char2) => char1 > char2 ? char1 : char2 keepGreatestChar('b', 'f') // 'f' // 'f' 'b'
рдЕрдм
keepGreatestChar()
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░,
keepGreatestChar()
рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВред рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдХреЗ, рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдпрд╣ рдЪрд░рд┐рддреНрд░
b
рд╕рд╛рде рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рдЪрд░рд┐рддреНрд░ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
const keepGreatestChar = (char1, char2) => char1 > char2 ? char1 : char2 const keepGreatestCharBetweenBAnd = char => keepGreatestChar('b', char) keepGreatestCharBetweenBAnd('a')
рдЕрдм
greatestCharInArray()
keepGreatestChar()
рдлрд╝рдВрдХреНрд╢рди
keepGreatestChar()
, рдЬреЛ рдХрд┐
reduce()
рд╕рд░рдгреА рд╡рд┐рдзрд┐ рдореЗрдВ
keepGreatestChar()
рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдкрдХреЛ "рд╕рдмрд╕реЗ рдмрдбрд╝рд╛" рд╡рд░реНрдг рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рддрд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
const keepGreatestChar = (char1, char2) => char1 > char2 ? char1 : char2 const greatestCharInArray = array => array.reduce((acc, char) => acc > char ? acc : char, 'a') greatestCharInArray(['a', 'b', 'c', 'd'])
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
creduce()
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░реЗрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ
greatestCharInArray()
creduce()
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ, рдЙрд╕ рд╕рд░рдгреА рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЪрд░рд┐рддреНрд░ рдХреЛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдХреЛрдб рдвреВрдВрдврдирд╛ рд╣реИред
creduce()
рдлрд╝рдВрдХреНрд╢рди рдкрд░реНрдпрд╛рдкреНрдд рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдЬреЛ рдорд╛рдирдХ
reduce()
рд╕рд░рдгреА рд╡рд┐рдзрд┐ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдХреЙрд▓рдмреИрдХ, рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп рдФрд░ рдПрдХ рд╕рд░рдгреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдирддреАрдЬрддрди, рдЖрдкрдХреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЯреБрдХрдбрд╝рд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛:
const greatestCharInArray = creduce(keepGreatestChar, 'a') greatestCharInArray(['a', 'b', 'c', 'd'])
рдкрд░рд┐рдгрд╛рдо
рд╢рд╛рдпрдж рдЕрдм рдЖрдкрдХреЗ рдорди рдореЗрдВ рдпрд╣ рд╕рд╡рд╛рд▓ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рдкреНрд░рд╕реНрддреБрдд рдкрджреНрдзрддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдЪрд░рд┐рддреНрд░
c
рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдирд╛рдо рдХреНрдпреЛрдВ рд╣реИрдВред
c
рд╡рд░реНрдг рдХрд░реНрдбреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рд╣реИ, рдФрд░ рд╣рдордиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдХрд┐ рдХреИрд╕реЗ рдХрд░реА рдЧрдИ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреЛрдб рдкрдардиреАрдпрддрд╛ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИрдВред рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣рд╛рдВ рд╣рдордиреЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдХрдбрд╝рд╛рдИ рд╕реЗ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди, рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣рд╛рдВ рдЬреЛ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереА рдЙрд╕рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣рдореЗрдВ рдХреЛрдб рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрд░реАрдиреЗ рдХрд╛ рд╡рд┐рд╖рдп рдЖрдкрдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ - рддреЛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдЗрд╕ рдкреБрд╕реНрддрдХ рдХреЗ 4 рд╡реЗрдВ рдЕрдзреНрдпрд╛рдп рдХреЛ рдкрдврд╝рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рдЬрдм рд╕реЗ рдЖрдк рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдкрд╣реБрдВрдЪреЗ рд╣реИрдВ - рдЗрд╕ рдкреВрд░реА рдкреБрд╕реНрддрдХ рдХреЛ рдкрдврд╝реЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдирдП рд╣реИрдВ, рддреЛ
рдЗрд╕ рд╕реНрдЯрд╛рд░реНрдЯрд░ рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЗрдЦреЗрдВред
рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдХреНрдпрд╛ рдЖрдк рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?
