Π Π°Π±ΠΎΡ‚Π° с коллСкциями Π΄Π°Π½Π½Ρ‹Ρ… являСтся Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ΠΎΠΌ алгоритмичСской Π»ΠΎΠ³ΠΈΠΊΠΈ Π² систСмС 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅. Π‘Ρ€Π΅Π΄ΠΈ всСх Ρ‚ΠΈΠΏΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ массив Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ особоС мСсто благодаря своСй ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Однако, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ слоТныС вычислСния, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π² массивС Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ элСмСнты.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° массива Π½Π° пустоту каТСтся Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, Π½ΠΎ Π² срСдС 1Π‘ сущСствуСт нСсколько ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ Π΅Ρ‘ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ свои Π½ΡŽΠ°Π½ΡΡ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ читаСмости ΠΊΠΎΠ΄Π°. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ логичСским ошибкам ΠΈΠ»ΠΈ Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ основныС способы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ рассмотрим синтаксичСскиС конструкции, встроСнныС Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ особСнности Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ распространСнных ошибок ΠΈ ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ считаСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Β«ΠΊΠ°Π½ΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΌΒ» Π² соврСмСнном языкС запросов ΠΈ встроСнного языка 1Π‘.

ΠŸΡ€ΡΠΌΠ°Ρ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‡Π΅Ρ€Π΅Π· свойство ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ

Π‘Π°ΠΌΡ‹ΠΉ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ ΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ способ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ β€” ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ свойству ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ (ΠΈΠ»ΠΈ Count Π² англоязычном синтаксисС). Π­Ρ‚ΠΎ свойство доступно Ρƒ любого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΈΠΏΠ° Массив ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ€Π°Π²Π½ΠΎΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ числу элСмСнтов Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Π›ΠΎΠ³ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ строится Π½Π° простом сравнСнии: Ссли количСство Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠ»ΡŽ, Π·Π½Π°Ρ‡ΠΈΡ‚ массив пуст.

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ высокой Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠ΄Π°. Π›ΡŽΠ±ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠΈΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ ΠΏΠΎΠΉΠΌΠ΅Ρ‚ intent (Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅) программиста Π±Π΅Π· нСобходимости ΡƒΠ³Π»ΡƒΠ±Π»ΡΡ‚ΡŒΡΡ Π² Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ свойства ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ являСтся ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹ΠΌΠΈ расходами, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ хранится Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ структуры массива ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° элСмСнтов.

Однако стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ свойство ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ физичСский Ρ€Π°Π·ΠΌΠ΅Ρ€ массива. Если Π²Ρ‹ ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ элСмСнты, Π½ΠΎ Π½Π΅ сТали массив (Π² старых вСрсиях ΠΈΠ»ΠΈ спСцифичСских рСализациях), это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Π»ΠΎΠ³ΠΈΠΊΡƒ, хотя Π² соврСмСнной 1Π‘ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта всСгда ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ счСтчик. ИспользованиС этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° рСкомСндуСтся Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΆΠ½Π° ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: НС ΠΏΡƒΡ‚Π°ΠΉΡ‚Π΅ свойство ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ массива с количСством записСй Π² Π²Ρ‹Π±ΠΎΡ€ΠΊΠ΅ ΠΈΠ»ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ доступа ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими объСмами Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‡Π΅Ρ€Π΅Π· Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ остаСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ. Она Π½Π΅ зависит ΠΎΡ‚ наличия ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ ячССк ΠΈ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° структуру ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ наличия Π΄Π°Π½Π½Ρ‹Ρ… для дальнСйшСй ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

πŸ’‘

Для ускорСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ†ΠΈΠΊΠ»Π°Ρ… сохранитС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π°, Ссли Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π½Π΅ мСняСтся Π² процСссС ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π’Π“Π .ΠŸΡƒΡΡ‚ΠΎΠΉ

Начиная с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… вСрсий ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘, Π² глобальном контСкстС появился ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π’Π“Π  (Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ РСсурсы) ΠΈΠ»ΠΈ английская Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° V8. Π­Ρ‚ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ прСдоставляСт ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠŸΡƒΡΡ‚ΠΎΠΉ (ΠΈΠ»ΠΈ IsEmpty), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° отсутствиС значСния.

ΠœΠ΅Ρ‚ΠΎΠ΄ Π’Π“Π .ΠŸΡƒΡΡ‚ΠΎΠΉ(Массив) Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π±ΡƒΠ»Π΅Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: Π˜ΡΡ‚ΠΈΠ½Π°, Ссли ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ являСтся пустым массивом, ΠΈ Π›ΠΎΠΆΡŒ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС. Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π΅Π³ΠΎ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ: ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ массивы, Π½ΠΎ ΠΈ строки, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, структуры ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹. Π­Ρ‚ΠΎ позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ абстрактный ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄.

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° пСрСмСнная Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° (ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ НСопрСдСлСно). Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ прямого обращСния ΠΊ свойству ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ выполнСния ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ свойству Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠŸΡƒΡΡ‚ΠΎΠΉ бСзопасно Π²Π΅Ρ€Π½Π΅Ρ‚ Π˜ΡΡ‚ΠΈΠ½Π°.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π’Π“Π  бСзопаснСС?

ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ пСрСмСнная Π±Ρ‹Π»Π° ΠΈΠΌΠ΅Π½Π½ΠΎ массивом. Если Ρ‚Π°ΠΌ НСопрСдСлСно, Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка"ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½". ΠœΠ΅Ρ‚ΠΎΠ΄ Π’Π“Π .ΠŸΡƒΡΡ‚ΠΎΠΉ провСряСт Ρ‚ΠΈΠΏ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСбя ΠΈ Π½Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ.

ИспользованиС этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° особСнно Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ Π² ΠΎΠ±Ρ‰ΠΈΡ… модулях, Π³Π΄Π΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹ΠΌΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π΄ΠΈΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π’Π“Π .ΠŸΡƒΡΡ‚ΠΎΠΉ для всСх входящих ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, упрощая ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΊΠΎΠ΄Π° Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ с константой НСопрСдСлСно ΠΈ инициализация

Часто Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с ситуациСй, ΠΊΠΎΠ³Π΄Π° пСрСмСнная, планируСмая ΠΏΠΎΠ΄ массив, Π΅Ρ‰Π΅ Π½Π΅ создана. Π’ языкС 1Π‘ сущСствуСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ НСопрСдСлСно (ΠΈΠ»ΠΈ Undefined), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° отсутствиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠŸΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ пустоты массива критичСски Π²Π°ΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ пСрСмСнная Π²ΠΎΠΎΠ±Ρ‰Π΅ ссылаСтся Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° Массив.

Если Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ НСопрСдСлСно, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ выполнСния. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ бСзопасной ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ всСгда Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ значСния. Π­Ρ‚ΠΎ являСтся Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ программирования, Π·Π°Ρ‰ΠΈΡ‰Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π½Ρ‹Ρ… сбоСв.

Рассмотрим Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ сцСнарий ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Часто массив создаСтся динамичСски, ΠΈ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° наполнСния ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π»ΠΎΠ³ΠΈΡ‡Π½Π΅Π΅ сразу ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π½ΠΎΠ²Ρ‹ΠΌ пустым массивом, Ρ‡Π΅ΠΌ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΅Ρ‘ Π² состоянии нСопрСдСлСнности. Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ, избавляя ΠΎΡ‚ Π»ΠΈΡˆΠ½ΠΈΡ… условий.

  • πŸ›‘οΈ ВсСгда провСряйтС Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π’ΠΈΠΏΠ—Π½Ρ‡ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Π΅Ρ‘ свойствам.
  • πŸ”„ Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Новый Массив ΠΏΡ€ΠΈ объявлСнии, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ состояния НСопрСдСлСно.
  • ⚑ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Если НС Π’Π“Π .ΠŸΡƒΡΡ‚ΠΎΠΉ(Массив) Π’ΠΎΠ³Π΄Π° для максимальной бСзопасности ΠΈ краткости.

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° с ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ экономит врСмя Π½Π° ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ. Ошибки Ρ‚ΠΈΠΏΠ°"ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½" ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌΠΈ ΠΈΠ· самых частых Π² Π»ΠΎΠ³Π°Ρ… ошибок 1Π‘, ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Π½ΠΈΡ… связано ΠΈΠΌΠ΅Π½Π½ΠΎ с ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ коллСкциями.

πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ > 0
Π’Π“Π .ΠŸΡƒΡΡ‚ΠΎΠΉ(Массив)
Π’ΠΈΠΏΠ—Π½Ρ‡ + ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ
Π‘Π²ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами

ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы Π² 1Π‘ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой массивы, элСмСнты ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сами ΡΠ²Π»ΡΡŽΡ‚ΡΡ массивами. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚Π°ΠΊΠΎΠ³ΠΎ структуры Π½Π°"пустоту" ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒΡΡ двояко: пуст Π»ΠΈ Π²Π΅Ρ€Ρ…Π½Π΅ΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ массив ΠΈΠ»ΠΈ пусты Π»ΠΈ всС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ массивы. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ влоТСнности.

Если Π²Π΅Ρ€Ρ…Π½Π΅ΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ массив содСрТит элСмСнты, Π½ΠΎ эти элСмСнты ΡΠ²Π»ΡΡŽΡ‚ΡΡ пустыми массивами, ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π²Π΅Ρ€Π½Π΅Ρ‚ число большС нуля. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ввСсти Π² Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅, Ссли ваша бизнСс-Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… структурах. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях трСбуСтся рСкурсивная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΈΠ»ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΎΠ±Ρ…ΠΎΠ΄Π°.

Для Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ влоТСнности Π½Π΅ сущСствуСт встроСнного однострочного Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ придСтся Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ всСм уровням влоТСнности. Π­Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со слоТными структурами Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ парсингС JSON ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с иСрархичСскими справочниками Π² памяти.

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ
Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Высокая
Π’Π“Π .ΠŸΡƒΡΡ‚ΠΎΠΉ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Высокая
РСкурсивный ΠΎΠ±Ρ…ΠΎΠ΄ Π˜Π·Π±Ρ‹Ρ‚ΠΎΡ‡Π΅Π½ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ всю Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ Низкая
Π’ΠΈΠΏΠ—Π½Ρ‡ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ Ρ‚ΠΈΠΏ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ Ρ‚ΠΈΠΏ БрСдняя

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ структурами Π²Π°ΠΆΠ½ΠΎ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ трСбования Π·Π°Π΄Π°Ρ‡ΠΈ. Если достаточно Π·Π½Π°Ρ‚ΡŒ, создан Π»ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня, стандартных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π²ΠΏΠΎΠ»Π½Π΅ Ρ…Π²Π°Ρ‚ΠΈΡ‚. Если ΠΆΠ΅ трСбуСтся гарантия наличия Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° любом ΡƒΡ€ΠΎΠ²Π½Π΅, Π±Π΅Π· написания Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ.

πŸ’‘

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π΅"Π·Π°Π³Π»ΡΠ΄Ρ‹Π²Π°ΡŽΡ‚" Π²Π½ΡƒΡ‚Ρ€ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… массивов. Они ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСпосрСдствСнный ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ оптимизация ΠΊΠΎΠ΄Π°

Π’ высоконагруТСнных систСмах, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ 1Π‘:ERP ΠΈΠ»ΠΈ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ бухгалтСрскиС комплСксы, каТдая миллисСкунда ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π₯отя ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° массива Π½Π° пустоту β€” опСрация быстрая, Π² Ρ†ΠΈΠΊΠ»Π°Ρ…, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ Ρ€Π°Π· Π·Π° сСанс, Π²Ρ‹Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΎΠ±Ρ‰Π΅Π΅ врСмя выполнСния Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

НаиболСС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ являСтся прямоС ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ свойству ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ поля структуры Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΠ΅Ρ‚ΠΎΠ΄ Π’Π“Π .ΠŸΡƒΡΡ‚ΠΎΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ опрСдСлСния Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎ создаСт ΠΌΠΈΠΊΡ€ΠΎ-Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы. Π’ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠΌ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв эта Ρ€Π°Π·Π½ΠΈΡ†Π° Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½Π° для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π½ΠΎ Π²tight loops (ΠΏΠ»ΠΎΡ‚Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π°Ρ…) ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Однако, прСТдСврСмСнная оптимизация Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ€Π΅Π΄ΠΈΡ‚ΡŒ читаСмости. Если Ρ€Π°Π·Π½ΠΈΡ†Π° Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ составляСт Π΄ΠΎΠ»ΠΈ сСкунды Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, Π»ΡƒΡ‡ΡˆΠ΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ понятный ΠΈ бСзопасный ΠΌΠ΅Ρ‚ΠΎΠ΄ Π’Π“Π .ΠŸΡƒΡΡ‚ΠΎΠΉ. ЧСловСчСский рСсурс Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΊΠΎΠ΄Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π΄ΠΎΡ€ΠΎΠΆΠ΅, Ρ‡Π΅ΠΌ рСсурсы процСссора сСрвСра Π² соврСмСнных рСалиях.

Π‘Ρ‚ΠΎΠΈΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΎ влиянии Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. Π‘Π°ΠΌΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° массива Π² памяти Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ записСй Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ массив β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° этапС наполнСния массива Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· Π±Π°Π·Ρ‹, Π° Π½Π΅ Π½Π° этапС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с коллСкциями ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π΅Π»ΠΈΠ·Π°Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘. ВсСгда ΡΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ΡΡŒ с синтаксис-ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΎΠΌ вашСй ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ вСрсии ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ Π°Π½Ρ‚ΠΈΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹

Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ошибки ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с коллСкциями. Одной ΠΈΠ· самых распространСнных являСтся ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массив ΠΊΠ°ΠΊ Π±ΡƒΠ»Π΅Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² условии. Π’ языкС 1Π‘ массив Π½Π΅ приводится нСявно ΠΊ истинС ΠΈΠ»ΠΈ Π»ΠΆΠΈ, поэтому конструкция Если Массив Π’ΠΎΠ³Π΄Π° выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ компиляции ΠΈΠ»ΠΈ выполнСния.

Другая частая ошибка β€” ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов ΠΈΠ· массива Π²ΠΎ врСмя прохоТдСния ΠΏΠΎ Π½Π΅ΠΌΡƒ Ρ†ΠΈΠΊΠ»ΠΎΠΌ Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡŽ индСксации ΠΈ пропуску элСмСнтов ΠΈΠ»ΠΈ ошибкам. Если ваша ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° пустоты связана с Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» Для Π½ = Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ - 1 По 0 Π¦ΠΈΠΊΠ», идя с ΠΊΠΎΠ½Ρ†Π°.

Π’Π°ΠΊΠΆΠ΅ стоит ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ создания массивов"Π½Π° всякий случай" Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π±Π΅Π· явной нСобходимости. Π­Ρ‚ΠΎ расходуСт ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ сСрвСра. Π›ΡƒΡ‡ΡˆΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ массив локально Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ нСобходимости ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° пустоту сразу послС создания ΠΈΠ»ΠΈ получСния Π΄Π°Π½Π½Ρ‹Ρ….

β˜‘οΈ Π§Π΅ΠΊ-лист бСзопасной Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 4

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы (FAQ)

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠŸΡƒΡΡ‚Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ° для массива?

НСт, функция ΠŸΡƒΡΡ‚Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с тСкстовыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π² Π½Π΅Ρ‘ массива Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ прСобразования Ρ‚ΠΈΠΏΠΎΠ². Для массивов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ спСциализированныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, описанныС Π²Ρ‹ΡˆΠ΅.

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Массив.ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΠΈ Массив = Новый Массив?

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ удаляСт всС элСмСнты ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° массива, сохраняя саму ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Новый Массив создаСт ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² памяти, Π° старая ссылка (Ссли ΠΎΠ½Π° Π±Ρ‹Π»Π° Π³Π΄Π΅-Ρ‚ΠΎ Π΅Ρ‰Π΅) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ Π½Π° старый, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠΆΠ΅ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΉ массив, ΠΏΠΎΠΊΠ° Π½Π΅ сработаСт сборщик мусора.

Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ массив содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния НСопрСдСлСно?

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΌΠΈ срСдствами ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΡΡ‚ΡŒ значСниями нСльзя, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ количСство элСмСнтов. Π’Π°ΠΌ потрСбуСтся Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π½Π° равСнство НСопрСдСлСно. Массив с элСмСнтами, Ρ€Π°Π²Π½Ρ‹ΠΌΠΈ НСопрСдСлСно, тСхничСски Π½Π΅ являСтся пустым, Π΅Π³ΠΎ ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ большС нуля.

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π’Π“Π .ΠŸΡƒΡΡ‚ΠΎΠΉ Π² сСрвСрном ΠΊΠΎΠ΄Π΅?

Π”Π°, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π’Π“Π  (V8) доступСн ΠΊΠ°ΠΊ Π² клиСнтском, Ρ‚Π°ΠΊ ΠΈ Π² сСрвСрном контСкстС выполнСния ΠΊΠΎΠ΄Π° 1Π‘. Π•Π³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎ Π½Π° ΠΎΠ±Π΅ΠΈΡ… сторонах ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ для использования Π² ΠΎΠ±Ρ‰ΠΈΡ… модулях.