рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд▓реЗрдЦрдХ, рдЬрд┐рд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЖрдЬ рд╣рдо рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдЖрд╢реНрд╡рд╕реНрдд рд╣реИ рдХрд┐ рдХрдИ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдЬреИрд╕реЗ
Number
,
String
,
Object
,
Array
рдФрд░
Boolean
ред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреЛрдб рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рддреЗрдЬ рдФрд░ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрди рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдореЗрд╢рд╛ рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо
Set
рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдЕрджреНрд╡рд┐рддреАрдп рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдХреЛрдб рдХреЛ рддреЗрдЬ рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдЪ рд╣реИред
Array
рдФрд░
Set
рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд╣реИ, рд▓реЗрдХрд┐рди
Set
рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдРрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИрдВ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрди рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдкреНрд░рдХрдЯ рд╣реЛрддреА рд╣реИрдВ рдЬреЛ
Array
рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИрдВред
рдПрд░реЗ рдФрд░ рд╕реЗрдЯ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
Array
рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ (рд╣рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ "рд╕рд░рдгрд┐рдпрд╛рдБ" рдХрд╣реЗрдВрдЧреЗ) рдпрд╣ рд╣реИ рдХрд┐ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдорд╛рдиреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рд╕рдВрдЧреНрд░рд╣ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
const arr = [A, B, C, D]; console.log(arr.indexOf(A));
рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд,
Set
рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдПрдВ (рд╣рдо рдЙрдиреНрд╣реЗрдВ "рд╕рдВрдЧреНрд░рд╣" рдХрд╣реЗрдВрдЧреЗ) рдХреБрдВрдЬреА / рдорд╛рди рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдпреБрдХреНрдд рд╕рдВрдЧреНрд░рд╣ рд╣реИрдВред рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдЗрдЯрдо рд╕рдВрдЧреНрд░рд╣ рдХрд░рддреЗ рд╣реИрдВред рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рддрддреНрд╡реЛрдВ рдХреЛ рдЙрд╕ рдХреНрд░рдо рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдЬрдмрдХрд┐ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕рдорд╛рди рддрддреНрд╡ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рднреА рддрддреНрд╡ рдЕрджреНрд╡рд┐рддреАрдп рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
рд╕рдВрдЧреНрд░рд╣ рдХреА рдореБрдЦреНрдп рддрд╛рдХрдд рдХреНрдпрд╛ рд╣реИрдВ?
рдпрджрд┐ рдЖрдк рд╕рдВрдЧреНрд░рд╣ рдФрд░ рд╕рд░рдгрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рд░рдгрд┐рдпреЛрдВ рдкрд░ рд╕рдВрдЧреНрд░рд╣ рдкрд░ рдХреБрдЫ рд▓рд╛рдн рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдЬрд┐рдирдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреНрд░рднрд╛рд╡реА рд╣реИрдВ:
- рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рдЦреЛрдЬреЗрдВред рд╕рд░рдгреА рд╡рд┐рдзрд┐рдпрд╛рдБ
indexOf()
рдФрд░ includes()
, рддрддреНрд╡реЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рддрддреНрд╡ рддрддреНрд╡ рд╣реИ, рдзреАрд░реЗ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдВред - рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ред рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рдЙрд╕рдХреЗ рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд╕рд░рдгреА рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдмрд░рд╛рдмрд░ рддрддреНрд╡ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░
splice()
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдЗрдЯрдо рдЦреЛрдЬ рдХреЗ рд╕рд╛рде, рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдЗрдЯрдо рдирд┐рдХрд╛рд▓рдирд╛ рдПрдХ рдзреАрдорд╛ рдСрдкрд░реЗрд╢рди рд╣реИред - рдПрдХ рдЖрдЗрдЯрдо рдбрд╛рд▓реЗрдВред рдПрдХ рд╕рд░рдгреА рдореЗрдВ
push()
рдФрд░ unshift()
рдЬреИрд╕реЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдПрдХ рддрддреНрд╡ рдЬреЛрдбрд╝рдирд╛ рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реИред NaN
рдорд╛рди рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░реЗрдВред indexOf()
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рд╕рд░рдгреА рдореЗрдВ NaN
рдорд╛рди рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ has()
рд╕рдВрдЧреНрд░рд╣ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдореЗрдВ NaN
рд╣реИ рдпрд╛ рдирд╣реАрдВред- рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЖрдЗрдЯрдо рдирд┐рдХрд╛рд▓ рд░рд╣рд╛ рд╣реИред
Set
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗрд╡рд▓ рдЕрдирдиреНрдп рдорд╛рди рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рддрддреНрд╡реЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рд░рдгрд┐рдпреЛрдВ рдкрд░ рдЙрдирдХрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд╛рдн рд╣реИред рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рддрддреНрд╡реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред
рдЯрд╛рдЗрдк
Set
рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА
рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА
рд╣реИ ред
рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ рдкрд░
рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрд░реАрдХреЛрдВ рдореЗрдВ рд░реИрдЦрд┐рдХ рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ рд╣реИ - рдУ (рдПрди)ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рддрддреНрд╡ рдЦреЛрдЬ рд╕рдордп рд╕рд░рдгреА рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЖрдиреБрдкрд╛рддрд┐рдХ рд╣реИред
рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рддрддреНрд╡реЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ, рд╣рдЯрд╛рдиреЗ рдФрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ O (1) рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ рдЗрд╕ рддрд░рд╣ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдХрд╛рдо рдХреЗ рд╕рдордп рдкрд░ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рд╣реИред
рдпрд╣рд╛рдВ рдЖрдк рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд╕рдордп рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рд░рдгрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рдХрд┐рддрдиреА рддреЗрдЬреА рд╕реЗ рд╣реИрдВ?
рдпрджреНрдпрдкрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЗ рдкреНрд░рджрд░реНрд╢рди рд╕рдВрдХреЗрддрдХ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдХреЛрдВ рд╕реЗ рджреГрдврд╝рддрд╛ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╡реЗ рдЙрд╕ рдкреНрд░рдгрд╛рд▓реА рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕ рдкрд░ рдХреЛрдб рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдХреЛрдб рд░рдирдЯрд╛рдЗрдо рдкрд░, рд╕рдВрд╕рд╛рдзрд┐рдд рдбреЗрдЯрд╛ рдХреЗ рдЖрдХрд╛рд░ рдкрд░, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдЖрдкрдХреЛ рд╕рд░рдгрд┐рдпреЛрдВ рдФрд░ рд╕рдВрдЧреНрд░рд╣ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрдВрдЧреЗред рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдФрд░ рд╕рдордЭреЗрдВ рдХрд┐ рд╕рдВрдЧреНрд░рд╣ рд╕рд░рдгрд┐рдпреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рддреЗрдЬрд╝ рдХреИрд╕реЗ рд╣реИрдВред рдЕрдм рд╣рдо рддреАрди рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЙрдирдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред
Preparation рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рддреИрдпрд╛рд░реА
рдХреЛрдИ рднреА рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдПрдХ рд▓рд╛рдЦ рддрддреНрд╡реЛрдВ рдФрд░ рдПрдХ рд╣реА рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдПрдВред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдЪрдХреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдХрд╛ рдкрд╣рд▓рд╛ рдХрд╛рдЙрдВрдЯрд░ рдореВрд▓реНрдп 0 рд╣реЛрдЧрд╛, рдФрд░ рдЕрдВрддрд┐рдо - 999999:
let arr = [], set = new Set(), n = 1000000; for (let i = 0; i < n; i++) { arr.push(i); set.add(i); }
тЦНTest рдирдВрдмрд░ 1: рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдФрд░ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдПрдХ рддрддреНрд╡ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕рд░рдгреА рдореЗрдВ рдФрд░ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рддрддреНрд╡
123123
рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗ, рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдЗрди рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдРрд╕рд╛ рддрддреНрд╡ рдореМрдЬреВрдж рд╣реИред
let result; console.time('Array'); result = arr.indexOf(123123) !== -1; console.timeEnd('Array'); console.time('Set'); result = set.has(123123); console.timeEnd('Set');
рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:
Array: 0.173ms Set: 0.023ms
рд╕рдВрдЧреНрд░рд╣ рд╕рд░рдгреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 7.54 рдЧреБрдирд╛ рддреЗрдЬ рд╣реИред
тЦНTest рдирдВрдмрд░ 2: рдПрдХ рддрддреНрд╡ рдХрд╛ рд╕рдореНрдорд┐рд▓рди
рдЕрдм рдЖрдЗрдП рд╕рд░рдгрд┐рдпреЛрдВ рдФрд░ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
console.time('Array'); arr.push(n); console.timeEnd('Array'); console.time('Set'); set.add(n); console.timeEnd('Set');
рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реБрдЖ:
Array: 0.018ms Set: 0.003ms
рд╕рдВрдЧреНрд░рд╣ рд╕рд░рдгреА рд╕реЗ 6.73 рдЧреБрдирд╛ рддреЗрдЬ рд╣реИред
EstTest 3: рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдХреЛ рд╣рдЯрд╛рдПрдВ
рдЕрдм рдЖрдЗрдП рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рдЖрдЗрдЯрдо рдХреЛ рд╣рдЯрд╛ рджреЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреЛ рдкрд┐рдЫрд▓реЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛)ред рддрддреНрд╡реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд░реЛ рдХреЗ рдкрд╛рд╕ рдмрд┐рд▓реНрдЯ-рдЗрди рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдЕрдЪреНрдЫрд╛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╣рд╛рдпрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВрдЧреЗ:
const deleteFromArr = (arr, item) => { let index = arr.indexOf(item); return index !== -1 && arr.splice(index, 1); };
рдФрд░ рдпрд╣рд╛рдБ рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рд╣реИ:
console.time('Array'); deleteFromArr(arr, n); console.timeEnd('Array'); console.time('Set'); set.delete(n); console.timeEnd('Set');
рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:
Array: 1.122ms Set: 0.015ms
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдВрдЧреНрд░рд╣ рд╕рд░рдгреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 74.13 рдЧреБрдирд╛ рддреЗрдЬ рдерд╛!
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдмрдЬрд╛рдп рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдлреА рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреБрдЫ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдЙрджрд╛рд╣рд░рдг # 1: рдХрд┐рд╕реА рд╕рд░рдгреА рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдорд╛рдиреЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛
рдпрджрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╕рд░рдгреА рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдорд╛рди рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдорд╛рдиреЛрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХрд╛ рдпрд╣ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ:
const duplicateCollection = ['A', 'B', 'B', 'C', 'D', 'B', 'C'];
рдЙрджрд╛рд╣рд░рдг 2: Google рдореЗрдВ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХрд╛рд░реНрдп
рдореЗрд░реА рдПрдХ
рд╕рд╛рдордЧреНрд░реА рдореЗрдВ, рдореИрдВрдиреЗ Google рдХреЗ рдПрдХ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░рдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреВрдЫреЗ рдЧрдП рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреАред рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ C ++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЗрд╕ рднрд╛рд╖рд╛ рдХреЗ рдмрдЬрд╛рдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ
Set
рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрджрд┐ рдЖрдк рдЗрд╕ рдкреНрд░рд╢реНрди рдХреЗ рдЙрддреНрддрд░ рдХреЛ рдЕрдзрд┐рдХ рдЧрд╣рд░рд╛рдИ рд╕реЗ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдЙрдкрд░реЛрдХреНрдд рд▓реЗрдЦ рдкрдврд╝реЗрдВред рдпрд╣рд╛рдВ рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рджрд┐рдЦрд╛рддрд╛ рд╣реВрдВред
тЦН рдЯрд╛рд╕реНрдХ
рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рдПрдХ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╕рд░рдгреА рдФрд░ рдПрдХ
sum
рдорд╛рди рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдПред рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВ рдЬреЛ рдЗрд╕ рд╕рд░рдгреА рдХреЗ рдХрд┐рд╕реА рднреА рджреЛ рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЕрдЧрд░ рдпрд╣
true
рд╣реИ, рддреЛ рд╣рдореЗрдВ рдХреБрд▓ рдореВрд▓реНрдп рдорд┐рд▓рддрд╛ рд╣реИред рдпрджрд┐ рд╕рд░рдгреА рдореЗрдВ рдРрд╕реЗ рддрддреНрд╡ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ
false
рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐ рдЕрдЧрд░ рд╣рдореЗрдВ рдПрдХ рд╕рд░рдгреА рджреА рдЬрд╛рддреА рд╣реИ
[3, 5, 1, 4]
рдФрд░
sum
рдорд╛рди
9
, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐
4+5=9
ред
тЦНReshenie
рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдЖрдкрдХреЛ рд╕рд░рдгреА рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ,
Set
рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЙрди рдорд╛рдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдХрд┐ рдореВрд▓реНрдп рдорд╛рди рдХреЗ рд▓рд┐рдП рдкрд╛рдП рдЧрдП рдорд╛рдиреЛрдВ рдХреЗ рдкреВрд░рдХ рд╣реИрдВред
рдЖрдЗрдП рдЙрдкрд░реЛрдХреНрдд рд╕рд░рдгреА рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред рдЬрдм рд╣рдо
3
рдорд┐рд▓рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛
6
рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдХреБрд▓
9
ред рдлрд┐рд░, рд╣рд░ рдмрд╛рд░ рдЬрдм рд╣рдо рд╕рд░рдгреА рд╕реЗ рдПрдХ рдирдП рдореВрд▓реНрдп рдкрд░ рдЖрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕рдВрдЧреНрд░рд╣ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╡рд╣рд╛рдВ рд╣реИред рдЬрдм рд╣рдо рд╕рдВрдЦреНрдпрд╛
5
рдорд┐рд▓рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ
4
рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред рдФрд░ рдЬрдм, рдЕрдВрдд рдореЗрдВ, рд╣рдо рдирдВрдмрд░
4
, рд╣рдо рдЗрд╕реЗ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдвреВрдВрдврддреЗ рд╣реИрдВ рдФрд░
true
рд▓реМрдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╣рд▓ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
const findSum = (arr, val) => { let searchValues = new Set(); searchValues.add(val - arr[0]); for (let i = 1, length = arr.length; i < length; i++) { let searchVal = val - arr[i]; if (searchValues.has(arr[i])) { return true; } else { searchValues.add(searchVal); } }; return false; };
рдФрд░ рдпрд╣рд╛рдБ рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдорд╛рдзрд╛рди рд╣реИ:
const findSum = (arr, sum) => arr.some((set => n => set.has(n) || !set.add(sum - n))(new Set));
Set.prototype.has()
рдкрджреНрдзрддрд┐ рдХреА рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ O (1) рдХреЗ рдмрд╛рдж рд╕реЗ,
Set
рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрди рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдорд╛рди рдореЗрдВ рд╕рд░рдгреА рдореЗрдВ рдкрд╛рдИ рдЧрдИ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдкреВрд░рдХ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рд░реИрдЦрд┐рдХ рд╕рдордп (O (N)) рдореЗрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ рд╕рдорд╛рдзрд╛рди
Array.prototype.indexOf()
рд╡рд┐рдзрд┐ рдпрд╛
Array.prototype.indexOf()
рд╡рд┐рдзрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреА рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ O (N) рд╣реИ, рддреЛ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреА рдХреБрд▓ рдЬрдЯрд┐рд▓рддрд╛ O (N
2 ) рд╣реЛрдЧреАред рдирддреАрдЬрддрди, рд╡рд╣ рдмрд╣реБрдд рдзреАрдорд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдкрд░рд┐рдгрд╛рдо
рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ
Set
рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдм, рдЗрд╕рдХрд╛ рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реЛрдиреЗ рдкрд░, рдЖрдк рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд▓рд╛рдн рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред
рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ
Set
рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ?