Бинтаксис добавлСния элСмСнта Π² массив javascript. ВсС способы ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массива Π² JavaScript. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Array

  • ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² наши Π΄Π½ΠΈ, трСбуСтся Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π½Π΅ΠΊΠΈΠΌΠΈ Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° элСмСнтов Π² коллСкциях - это часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰Π°ΡΡΡ опСрация, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹, навСрняка, ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с массивами, ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°ΡΡΡŒ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ for , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ: for (var i=0; i < value.length; i++){} . Однако, Π»ΡƒΡ‡ΡˆΠ΅, всё-Ρ‚Π°ΠΊΠΈ, ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Π²Π΅Ρ‰ΠΈ ΡˆΠΈΡ€Π΅.

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

На самом Π΄Π΅Π»Π΅, Ρ‚Π°ΠΊΠΈΠ΅ срСдства Π² JavaScript ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ. НСкоторыС ΠΈΠ· Π½ΠΈΡ… рассмотрСны Π² ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π΅, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ прСдставляСм сСгодня Π²Π°ΡˆΠ΅ΠΌΡƒ вниманию. Π’ частности, Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎΠ± ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, ΠΎ Ρ†ΠΈΠΊΠ»Π΅ for…of , ΠΈ ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… includes() , some() , every() , filter() , map() ΠΈ reduce() . Π—Π΄Π΅ΡΡŒ ΠΌΡ‹, Π² основном, Π±ΡƒΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ массивах, Π½ΠΎ рассматриваСмыС здСсь ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ подходят ΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ².

Надо ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π·ΠΎΡ€Ρ‹ соврСмСнных ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½Π° JS ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ с использованиСм стрСлочных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ Π½Π΅ особСнно часто ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ ΠΈΠΌΠΈ - ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ ΠΎΠ½ΠΈ Π½Π΅ нравятся, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ слишком ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ, Π°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½ΠΈ просто Π²Π°ΠΌ Π½Π΅ подходят. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ здСсь, Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ситуаций, Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° выполнСния ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ дСйствий: с использованиСм ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (ES5) ΠΈ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ стрСлочных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (ES6). Для Ρ‚Π΅Ρ…, Ρƒ ΠΊΠΎΠ³ΠΎ Π½Π΅Ρ‚ ΠΎΠΏΡ‹Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° со стрСлочными функциями, ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ стрСлочныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ эквивалСнтами объявлСний Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. НС стоит Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π’ частности, это связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΈ стрСлочных функциях ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово this Π²Π΅Π΄Ρ‘Ρ‚ сСбя ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ.

1. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ (spread operator) позволяСт Β«Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΒ» массивы, подставляя Π² Ρ‚ΠΎ мСсто, Π³Π΄Π΅ использован этот ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, вмСсто массивов, ΠΈΡ… элСмСнты. ΠŸΠΎΡ…ΠΎΠΆΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΈ для Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

β–Π‘ΠΈΠ»ΡŒΠ½Ρ‹Π΅ стороны ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ

  • Π­Ρ‚ΠΎ - простой ΠΈ быстрый способ Β«Π²Ρ‹Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒΒ» ΠΈΠ· массива Π΅Π³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты.
  • Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°ΠΌΠΈ массивов ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².
  • Π­Ρ‚ΠΎ - быстрый ΠΈ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятный ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ мСста Π² ΠΊΠΎΠ΄Π΅ - ΠΎΠ½ выглядит ΠΊΠ°ΠΊ Ρ‚Ρ€ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ (…).

β–ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΏΠ΅Ρ€Π΅Π΄ Π²Π°ΠΌΠΈ стоит Π·Π°Π΄Π°Ρ‡Π° вывСсти список Π²Π°ΡˆΠΈΡ… Π»ΡŽΠ±ΠΈΠΌΡ‹Ρ… ΡƒΠ³ΠΎΡ‰Π΅Π½ΠΈΠΉ, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΈ этом Ρ†ΠΈΠΊΠ». Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ это дСлаСтся Ρ‚Π°ΠΊ:

2. Π¦ΠΈΠΊΠ» for…of

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ for…of ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΎΠ±Ρ…ΠΎΠ΄Π° ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Он Π΄Π°Ρ‘Ρ‚ доступ ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ элСмСнтам Ρ‚Π°ΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Π² частности - ΠΊ элСмСнтам массивов), Ρ‡Ρ‚ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, позволяСт ΠΈΡ… ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π·Π°ΠΌΠ΅Π½ΠΎΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌΡƒ Ρ†ΠΈΠΊΠ»Ρƒ for .

β–Π‘ΠΈΠ»ΡŒΠ½Ρ‹Π΅ стороны Ρ†ΠΈΠΊΠ»Π° for…of

  • Π­Ρ‚ΠΎ - простой способ для добавлСния ΠΈΠ»ΠΈ обновлСния элСмСнтов ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ.
  • Π¦ΠΈΠΊΠ» for…of позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ вычислСния с использованиСм элСмСнтов (суммированиС, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅).
  • Им ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ нСобходимости выполнСния ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ условий.
  • Π•Π³ΠΎ использованиС Π²Π΅Π΄Ρ‘Ρ‚ ΠΊ написанию Π±ΠΎΠ»Π΅Π΅ чистого ΠΈ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

β–ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ вас имССтся структура Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π°Ρ содСрТимоС ящика с инструмСнтами ΠΈ Π²Π°ΠΌ Π½Π°Π΄ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ эти инструмСнты. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° for...of:

3. ΠœΠ΅Ρ‚ΠΎΠ΄ includes()

ΠœΠ΅Ρ‚ΠΎΠ΄ includes() ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ наличия Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ элСмСнта, Π² частности, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ строки Π² массивС, содСрТащСм строки. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true ΠΈΠ»ΠΈ false Π² зависимости ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. ΠŸΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ ΠΈΠΌ, стоит ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ чувствитСлСн ΠΊ рСгистру символов. Если, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π΅ΡΡ‚ΡŒ строковой элСмСнт SCHOOL , Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π΅Π³ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ includes() выполняСтся ΠΏΠΎ строкС school , ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π΅Ρ€Π½Ρ‘Ρ‚ false .

β–Π‘ΠΈΠ»ΡŒΠ½Ρ‹Π΅ стороны ΠΌΠ΅Ρ‚ΠΎΠ΄Π° includes()

  • ΠœΠ΅Ρ‚ΠΎΠ΄ includes() ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π² Π΄Π΅Π»Π΅ создания простых ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² поиска Π΄Π°Π½Π½Ρ‹Ρ….
  • Он Π΄Π°Ρ‘Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятный способ опрСдСлСния наличия Π½Π΅ΠΊΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… Π² массивС.
  • Π•Π³ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² условных выраТСниях для ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ элСмСнтов, ΠΈ для выполнСния Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.
  • Π•Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Π΅Π΄Ρ‘Ρ‚ ΠΊ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡŽ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠ΄Π°.

β–ΠŸΡ€ΠΈΠΌΠ΅Ρ€

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

4. ΠœΠ΅Ρ‚ΠΎΠ΄ some()

ΠœΠ΅Ρ‚ΠΎΠ΄ some() позволяСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· искомых элСмСнтов Π² массивС. Он, ΠΏΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true ΠΈΠ»ΠΈ false . Он ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Π²Ρ‹ΡˆΠ΅Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ includes() , Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ являСтся функция, Π° Π½Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, обычная строка.

β–Π‘ΠΈΠ»ΡŒΠ½Ρ‹Π΅ стороны ΠΌΠ΅Ρ‚ΠΎΠ΄Π° some()

  • ΠœΠ΅Ρ‚ΠΎΠ΄ some() позволяСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, имССтся Π»ΠΈ Π² массивС хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΡ… нас элСмСнтов.
  • Он выполняСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ условия с использованиСм ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΉ Π΅ΠΌΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
  • Π­Ρ‚ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

β–ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ‹ - Π²Π»Π°Π΄Π΅Π»Π΅Ρ† ΠΊΠ»ΡƒΠ±Π°, ΠΈ Π² ΠΎΠ±Ρ‰Π΅ΠΌ-Ρ‚ΠΎ, вас Π½Π΅ интСрСсуСт - ΠΊΡ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² ваш ΠΊΠ»ΡƒΠ± ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚. Однако, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ посСтитСлям Π²Ρ…ΠΎΠ΄ Π² ΠΊΠ»ΡƒΠ± Π·Π°ΠΊΡ€Ρ‹Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ склонны ΠΊ ΠΈΠ·Π»ΠΈΡˆΠ½Π΅ΠΌΡƒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΡŽ спиртных Π½Π°ΠΏΠΈΡ‚ΠΊΠΎΠ², ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΎΠ½ΠΈ ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² вашСм Π·Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ сами, ΠΈ с Π½ΠΈΠΌΠΈ Π½Π΅Ρ‚ Π½ΠΈΠΊΠΎΠ³ΠΎ, ΠΊΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π° Π½ΠΈΠΌΠΈ ΠΏΡ€ΠΈΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π³Ρ€ΡƒΠΏΠΏΠ΅ посСтитСлСй ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΠΉΡ‚ΠΈ Π² ΠΊΠ»ΡƒΠ± Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ мСньшС 18-Ρ‚ΠΈ Π»Π΅Ρ‚. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π°, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ some() . НиТС Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ продСмонстрировано Π² Π΄Π²ΡƒΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ….

ES5

ES6

5. ΠœΠ΅Ρ‚ΠΎΠ΄ every()

ΠœΠ΅Ρ‚ΠΎΠ΄ every() ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ массив ΠΈ провСряСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π΅Π³ΠΎ элСмСнт Π½Π° соотвСтствиС Π½Π΅ΠΊΠΎΠ΅ΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ, возвращая true Π² Ρ‚ΠΎΠΌ случаС, Ссли всС элСмСнты массива ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ, ΠΈ false Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС. МоТно Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ some() .

β–Π‘ΠΈΠ»ΡŒΠ½Ρ‹Π΅ стороны ΠΌΠ΅Ρ‚ΠΎΠ΄Π° every()

  • ΠœΠ΅Ρ‚ΠΎΠ΄ every() позволяСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ соотвСтствиС ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ всСх элСмСнтов массива.
  • Условия ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ с использованиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.
  • Он способствуСт ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

β–ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ВСрнёмся ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ. Π’Π°ΠΌ Π²Ρ‹ пропускали Π² ΠΊΠ»ΡƒΠ± посСтитСлСй, Π½Π΅ Π΄ΠΎΡΡ‚ΠΈΠ³ΡˆΠΈΡ… 18 Π»Π΅Ρ‚, Π½ΠΎ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ написал заявлСниС Π² ΠΏΠΎΠ»ΠΈΡ†ΠΈΡŽ, послС Ρ‡Π΅Π³ΠΎ Π²Ρ‹ ΠΏΠΎΠΏΠ°Π»ΠΈ Π² Π½Π΅ΠΏΡ€ΠΈΡΡ‚Π½ΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ всё ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡƒΠ»Π°Π΄ΠΈΡ‚ΡŒ, Π²Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ всё это Π½ΠΈ ΠΊ Ρ‡Π΅ΠΌΡƒ ΠΈ уТСсточили ΠΏΡ€Π°Π²ΠΈΠ»Π° посСщСния ΠΊΠ»ΡƒΠ±Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π³Ρ€ΡƒΠΏΠΏΠ° посСтитСлСй ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Π² ΠΊΠ»ΡƒΠ± Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли возраст ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‡Π»Π΅Π½Π° Π³Ρ€ΡƒΠΏΠΏΡ‹ Π½Π΅ мСньшС 18 Π»Π΅Ρ‚. Как ΠΈ Π² ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΉ Ρ€Π°Π·, рассмотрим Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π² Π΄Π²ΡƒΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ…, Π½ΠΎ Π½Π° этот Ρ€Π°Π· Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ every() .

ES5

ES6

6. ΠœΠ΅Ρ‚ΠΎΠ΄ filter()

ΠœΠ΅Ρ‚ΠΎΠ΄ filter() позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ, Π½Π° основС Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ массива, Π½ΠΎΠ²Ρ‹ΠΉ массив, содСрТащий Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ элСмСнты исходного массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ.

β–Π‘ΠΈΠ»ΡŒΠ½Ρ‹Π΅ стороны ΠΌΠ΅Ρ‚ΠΎΠ΄Π° filter()

  • ΠœΠ΅Ρ‚ΠΎΠ΄ filter() позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ исходного массива.
  • Он позволяСт ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… элСмСнтов.
  • Он ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°.

β–ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Π°ΠΌ Π½Π°Π΄ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· списка Ρ†Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Ρ‹ 30. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ filter() .

ES5

ES6

7. ΠœΠ΅Ρ‚ΠΎΠ΄ map()

ΠœΠ΅Ρ‚ΠΎΠ΄ map() ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ filter() Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ‚ΠΎΠΆΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ массив. Однако ΠΎΠ½ примСняСтся для ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ элСмСнтов исходного массива.

β–Π‘ΠΈΠ»ΡŒΠ½Ρ‹Π΅ стороны ΠΌΠ΅Ρ‚ΠΎΠ΄Π° map()

  • ΠœΠ΅Ρ‚ΠΎΠ΄ map() позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ нСобходимости измСнСния элСмСнтов исходного массива.
  • Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты массивов.
  • Он ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°.

β–ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ вас имССтся список Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с Ρ†Π΅Π½Π°ΠΌΠΈ. Π’Π°ΡˆΠ΅ΠΌΡƒ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρƒ Π½ΡƒΠΆΠ΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ список Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², Ρ†Π΅Π½Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сниТСны Π½Π° 25%. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ map() .

ES5

ES6

8. ΠœΠ΅Ρ‚ΠΎΠ΄ reduce()

ΠœΠ΅Ρ‚ΠΎΠ΄ reduce() , Π² Π΅Π³ΠΎ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ Π²ΠΈΠ΄Π΅, позволяСт ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты числовых массивов. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΎΠ½ сводит массив ΠΊ СдинствСнному Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ. Π­Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для выполнСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… вычислСний.

β–Π‘ΠΈΠ»ΡŒΠ½Ρ‹Π΅ стороны ΠΌΠ΅Ρ‚ΠΎΠ΄Π° reduce()

  • Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° reduce() ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ сумму ΠΈΠ»ΠΈ срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнтов массива.
  • Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ускоряСт ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ вычислСний.

β–ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Π°ΠΌ Π½Π°Π΄ΠΎ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ваши расходы Π·Π° нСдСлю, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хранятся Π² массивС. РСшим эту Π·Π°Π΄Π°Ρ‡Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° reduce() .

ES5

ES6

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΊΠΈ

ΠœΠ°ΡΡΠΈΠ²Ρ‹ β€” это ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ мноТСство ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² β€œΠΎΠ΄Π½ΠΎΠΌ мСстС”. Однако ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎ JavaScript-Π΅, Ρ‚ΠΎ Ρ‚ΡƒΡ‚ Π΅ΡΡ‚ΡŒ ΠΊΡƒΠ΄Π° ΠΊΠ°ΠΏΠ½ΡƒΡ‚ΡŒ.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим Ρ‚Ρ€ΠΎΠΉΠΊΡƒ малоизвСстных Ρ‚Π΅Ρ…Π½ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с массивами.

1. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… свойств ΠΊ массивам

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

Π’ΠΎΠΎΠ±Ρ‰Π΅ говоря, мноТСство Π²Π΅Ρ‰Π΅ΠΉ с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ сталкиваСмся Π² JavaScript-Π΅ прСдставляСт собой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Π‘ΠΏΡ€Π°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² языкС Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽ ΠΈ β€œΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅β€ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ ΠΈΡ… значСния Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² свойствах Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

2. Доступ ΠΊ элСмСнтам массива Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ†ΠΈΠΊΠ»Π°

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ индСксы массивов ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния, Π½Π°Ρ‡Π°Π»ΠΎ отсчёта начинаСтся с нуля. ВпослСдствии ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ индСкс для доступа ΠΊ элСмСнту массива Π½Π° Π΄Π°Π½Π½ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°.

Π’ ECMAScript6 Π±Ρ‹Π» прСдставлСн способ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ массива Π±Π΅Π· использования индСксов, Π° Ρ‡Π΅Ρ€Π΅Π· Π½ΠΎΠ²Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» for…of .

Π¦ΠΈΠΊΠ» for...of ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π° ΠΏΠΎ элСмСнтам массива, Π½Π΅ затрагивая ΠΏΡ€ΠΈ этом индСкс элСмСнта.

Var ary = ["orange","apple","lychee"]; for (let item of ary){ console.log(item); } // "orange", "apple", "lychee" Для сравнСния: Π²Ρ‹Π²ΠΎΠ΄ индСксов элСмСнтов Π² Ρ†ΠΈΠΊΠ»Π΅ for. var ary = ["orange","apple","lychee"]; for (var item = 0; item < ary.length; item++){ console.log(item); } // 0, 1, 2

3. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов β€” Π½Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива

Когда Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎ размСрности массива, Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΡ‹ Π΄ΡƒΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ подразумСваСтся количСство хранящихся Π² Π½Ρ‘ΠΌ элСмСнтов. На Π΄Π΅Π»Π΅ это Π½Π΅ совсСм Ρ‚Π°ΠΊ β€” свойство length рассчитываСтся Π² зависимости ΠΎΡ‚ максимального индСкса элСмСнта.

Бвойство length ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ. Π§Ρ‚ΠΎΠ±Ρ‹ Π² этом ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ достаточно Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ манипуляции:

Var ary = ; ary.length = 3; console.log(ary.length); // 3 ary = "abcd"; console.log(ary.length); // 6

Π’ послСднСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±Ρ‹Π»ΠΎ достаточно ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ элСмСнт Π½Π° ΠΏΡΡ‚ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Π° массива стала Ρ€Π°Π²Π½Π° 6. Если Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ индСксы ΠΎΡ‚ 0 Π΄ΠΎ 4 создадутся автоматичСски, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π½Π΅ΠΏΡ€Π°Π²Ρ‹. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ in .

Var ary = ; ary.length = 3; console.log(ary.length); // 3 ary = "abcd"; console.log(ary.length); // 6 console.log(0 in ary); // false

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π±ΡƒΠ΄Π΅Ρ‚ справСдливо Π½Π°Π·Π²Π°Ρ‚ΡŒ массив ary "Ρ€Π°Π·Ρ€Π΅ΠΆΡ‘Π½Π½Ρ‹ΠΌ".

Π’Π°ΠΊ ΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свойством length для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π΅Π·Π°Ρ‚ΡŒ массивы. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, прСдставлСнном Π½ΠΈΠΆΠ΅, дСмонстрируСтся β€œΠΏΠΎΡ‚Π΅Ρ€Ρβ€ элСмСнта ΠΏΠΎΠ΄ индСксом 5, ΠΏΡƒΡ‚Ρ‘ΠΌ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ значСния свойства length массива ary .

Var ary = ; ary.length = 3; console.log(ary.length); // 3 ary = "abcd"; console.log(ary.length); // 6 ary.length = 2; console.log(ary.length); // 2 console.log(ary); // undefined

  • ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄
  • I. ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ настоящих массивов
    1. ΠœΠ΅Ρ‚ΠΎΠ΄ forEach ΠΈ родствСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
    2. Π¦ΠΈΠΊΠ» for
    3. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ использованиС Ρ†ΠΈΠΊΠ»Π° for...in
    4. Π¦ΠΈΠΊΠ» for...of (нСявноС использованиС ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°)
    5. Π―Π²Π½ΠΎΠ΅ использованиС ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°
    1. ИспользованиС способов ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° настоящих массивов
    2. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² настоящий массив
    3. Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ срСды исполнСния

I. ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ настоящих массивов

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ способа ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° элСмСнтов настоящСго массива:
  1. ΠΌΠ΅Ρ‚ΠΎΠ΄ Array.prototype.forEach ;
  2. классичСский Ρ†ΠΈΠΊΠ» for ;
  3. Β«ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΒ» построСнный Ρ†ΠΈΠΊΠ» for...in .
ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² скором Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, с появлСниСм Π½ΠΎΠ²ΠΎΠ³ΠΎ стандарта ECMAScript 6 (ES 6), оТидаСтся Π΅Ρ‰Π΅ Π΄Π²Π° способа:
  1. Ρ†ΠΈΠΊΠ» for...of (нСявноС использованиС ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°);
  2. явноС использованиС ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

1. ΠœΠ΅Ρ‚ΠΎΠ΄ forEach ΠΈ родствСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

Если ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ рассчитан Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ возмоТностСй стандарта ECMAScript 5 (ES5), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠΉ - ΠΌΠ΅Ρ‚ΠΎΠ΄ forEach .

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования:
var a = ["a", "b", "c"]; a.forEach(function(entry) { console.log(entry); });
Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС использованиС forEach Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ эмуляции es5-shim для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ², Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. К Π½ΠΈΠΌ относятся IE 8 ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΠ΅ вСрсии, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎ сих ΠΏΠΎΡ€ ΠΊΠΎΠ΅-Π³Π΄Π΅ Π΅Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ.

К достоинствам forEach относится Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ здСсь Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для хранСния индСкса ΠΈ значСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ элСмСнта массива, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ автоматичСски ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° (ΠΊΠΎΠ»Π±Π΅ΠΊ) Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Если вас бСспокоят Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π½Π° Π²Ρ‹Π·ΠΎΠ² ΠΊΠΎΠ»Π±Π΅ΠΊΠ° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта, Π½Π΅ Π²ΠΎΠ»Π½ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ это .

ForEach ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° всСх элСмСнтов массива, Π½ΠΎ ΠΊΡ€ΠΎΠΌΠ΅ Π½Π΅Π³ΠΎ ES5 ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π΅Ρ‰Π΅ нСсколько ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° всСх ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… элСмСнтов плюс выполнСния ΠΏΡ€ΠΈ этом ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ дСйствий с Π½ΠΈΠΌΠΈ:

  • every - Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true , Ссли для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта массива ΠΊΠΎΠ»Π±Π΅ΠΊ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΊ true .
  • some - Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true , Ссли хотя Π±Ρ‹ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта массива ΠΊΠΎΠ»Π±Π΅ΠΊ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΊ true .
  • filter - создаСт Π½ΠΎΠ²Ρ‹ΠΉ массив, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Ρ‚Π΅ элСмСнты исходного массива, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠΎΠ»Π±Π΅ΠΊ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true .
  • map - создаСт Π½ΠΎΠ²Ρ‹ΠΉ массив, состоящий ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²ΠΎΠ·Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… ΠΊΠΎΠ»Π±Π΅ΠΊΠΎΠΌ.
  • reduce - сводит массив ΠΊ СдинствСнному Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, примСняя ΠΊΠΎΠ»Π±Π΅ΠΊ ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту массива, начиная с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ (ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ для вычислСния суммы элСмСнтов массива ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ).
  • reduceRight - Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ reduce, Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ элСмСнты Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС.

2. Π¦ΠΈΠΊΠ» for

Π‘Ρ‚Π°Ρ€Ρ‹ΠΉ Π΄ΠΎΠ±Ρ€Ρ‹ΠΉ for Ρ€ΡƒΠ»ΠΈΡ‚ :

Var a = ["a", "b", "c"]; var index; for (index = 0; index < a.length; ++index) { console.log(a); }
Если Π΄Π»ΠΈΠ½Π° массива Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Π° Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ всСго Ρ†ΠΈΠΊΠ»Π°, Π° сам Ρ†ΠΈΠΊΠ» ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ критичСскому Π² ΠΏΠ»Π°Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ участку ΠΊΠΎΠ΄Π° (Ρ‡Ρ‚ΠΎ маловСроятно), Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Β«Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽΒ» Π²Π΅Ρ€ΡΠΈΡŽ for с Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄Π»ΠΈΠ½Ρ‹ массива:

Var a = ["a", "b", "c"]; var index, len; for (index = 0, len = a.length; index < len; ++index) { console.log(a); }
ВСорСтичСски этот ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‡ΡƒΡ‚ΡŒ быстрСС, Ρ‡Π΅ΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ.

Если порядок ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° элСмСнтов Π½Π΅ Π²Π°ΠΆΠ΅Π½, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΉΡ‚ΠΈ Π΅Ρ‰Π΅ дальшС Π² ΠΏΠ»Π°Π½Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ для хранСния Π΄Π»ΠΈΠ½Ρ‹ массива, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² порядок ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ:

Var a = ["a", "b", "c"]; var index; for (index = a.length - 1; index >= 0; --index) { console.log(a); }
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² соврСмСнных Π΄Π²ΠΈΠΆΠΊΠ°Ρ… JavaScript ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΈΠ³Ρ€Ρ‹ с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Ρ‡Π°Ρ‚.

3. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ использованиС Ρ†ΠΈΠΊΠ»Π° for...in

Если Π²Π°ΠΌ ΠΏΠΎΡΠΎΠ²Π΅Ρ‚ΡƒΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» for...in , ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ массивов - Π½Π΅ Ρ‚ΠΎ, для Ρ‡Π΅Π³ΠΎ ΠΎΠ½ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ . Π’ΠΎΠΏΡ€Π΅ΠΊΠΈ распространСнному Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΡŽ Ρ†ΠΈΠΊΠ» for...in ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ Π½Π΅ индСксы массива, Π° пСрСчислимыС свойства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Ρ… массивов , for...in ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ этом ΠΌΠ΅Ρ€Ρ‹ прСдостороТности, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅:

// a - Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹ΠΉ массив var a = ; a = "a"; a = "b"; a = "c"; for (var key in a) { if (a.hasOwnProperty(key) && /^0$|^\d*$/.test(key) && key <= 4294967294) { console.log(a); } }
Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° выполняСтся Π΄Π²Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:

  1. Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ массив ΠΈΠΌΠ΅Π΅Ρ‚ собствСнноС свойство с ΠΈΠΌΠ΅Π½Π΅ΠΌ key (Π½Π΅ наслСдованноС ΠΈΠ· Π΅Π³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ°).
  2. Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ key - строка, содСрТащая Π΄Π΅ΡΡΡ‚ΠΈΡ‡Π½ΡƒΡŽ запись Ρ†Π΅Π»ΠΎΠ³ΠΎ числа, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ мСньшС 4294967294 . ΠžΡ‚ΠΊΡƒΠ΄Π° бСрСтся послСднСС число? Из опрСдСлСния индСкса массива Π² ES5, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ слСдуСт, Ρ‡Ρ‚ΠΎ наибольший индСкс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ элСмСнт Π² массивС: (2^32 - 2) = 4294967294 .
ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΎΡ‚Π½ΠΈΠΌΡƒΡ‚ лишнСС врСмя ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°. Но Π² случаС Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ массива этот способ Π±ΠΎΠ»Π΅Π΅ эффСктивСн, Ρ‡Π΅ΠΌ Ρ†ΠΈΠΊΠ» for , ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² этом случаС ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ явно ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² массивС. Π’Π°ΠΊ, Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ всСго 3 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ (для индСксов 0, 10 ΠΈ 10000) - ΠΏΡ€ΠΎΡ‚ΠΈΠ² 10001 Π² Ρ†ΠΈΠΊΠ»Π΅ for .

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° трСбуСтся ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ массива, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Function arrayHasOwnIndex(array, key) { return array.hasOwnProperty(key) && /^0$|^\d*$/.test(key) && key <= 4294967294; }
Π’ΠΎΠ³Π΄Π° Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сократится:

For (key in a) { if (arrayHasOwnIndex(a, key)) { console.log(a); } }
РассмотрСнный Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ являСтся ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ, подходящим для всСх случаСв. Но вмСсто Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, хотя Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΈ Π½Π΅ совсСм ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ, Π½ΠΎ, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° случаСв:

For (key in a) { if (a.hasOwnProperty(key) && String(parseInt(key, 10)) === key) { console.log(a); } }

4. Π¦ΠΈΠΊΠ» for...of (нСявноС использованиС ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°)

ES6, ΠΏΠΎΠΊΠ° всС Π΅Ρ‰Π΅ ΠΏΡ€Π΅Π±Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π² статусС Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊΠ° , Π΄ΠΎΠ»ΠΆΠ΅Π½ ввСсти Π² JavaScript ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.

Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ - это Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт стандартный способ получСния ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ ΠΈΠ»ΠΈ бСсконСчной).
Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ - это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ next() - функция Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с двумя свойствами:

  1. done (boolean) - ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true , Ссли ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ достиг ΠΊΠΎΠ½Ρ†Π° ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false .
  2. value - опрСдСляСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ (ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ), Ссли свойство done ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true .
МногиС встроСнныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π² Ρ‚.Ρ‡. настоящиС массивы, ΠΈΠΌΠ΅ΡŽΡ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ способ примСнСния ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π² настоящих массивах - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ for...of .

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования for...of:

Var val; var a = ["a", "b", "c"]; for (val of a) { console.log(val); }
Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ†ΠΈΠΊΠ» for...of нСявно Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Array для получСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ значСния массива.

5. Π―Π²Π½ΠΎΠ΅ использованиС ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°

Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ явно, ΠΏΡ€Π°Π²Π΄Π°, Π² этом случаС ΠΊΠΎΠ΄ становится Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ слоТнСС, ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ†ΠΈΠΊΠ»ΠΎΠΌ for...of . Выглядит это ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

Var a = ["a", "b", "c"]; var it = a.entries(); var entry; while (!(entry = it.next()).done) { console.log(entry.value); }
Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Array.prototype.entries Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ‹Π²ΠΎΠ΄Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массива. На ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ entry.value содСрТит массив Π²ΠΈΠ΄Π° [ΠΊΠ»ΡŽΡ‡, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅] .

II. ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ массивоподобных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

ΠšΡ€ΠΎΠΌΠ΅ настоящих массивов, Π² JavaScript Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ массивоподобныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ . Π‘ настоящими массивами ΠΈΡ… Ρ€ΠΎΠ΄Π½ΠΈΡ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ свойство length ΠΈ свойства с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Π² Π²ΠΈΠ΄Π΅ чисСл, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнтам массива. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ DOM ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ NodeList ΠΈ псСвдомассив arguments , доступный Π²Π½ΡƒΡ‚Ρ€ΠΈ любой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ/ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

1. ИспользованиС способов ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° настоящих массивов

Как ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ, Ссли Π½Π΅ всС, способы ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° настоящих массивов ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массивоподобных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ for ΠΈ for...in ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΊ массивоподобным ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΡƒΡ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊ настоящим массивам.

ForEach ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Array.prototype Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΊ массивоподобным ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ. Для этого Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² Function.call ΠΈΠ»ΠΈ Function.apply .

НапримСр, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ forEach ΠΊ свойству childNodes ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Node , Ρ‚ΠΎ это дСлаСтся Ρ‚Π°ΠΊ:

Array.prototype.forEach.call(node.childNodes, function(child) { // Π΄Π΅Π»Π°Π΅ΠΌ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ child });
Для удобства ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования этого ΠΏΡ€ΠΈΠ΅ΠΌΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ссылку Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ Array.prototype.forEach Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ ΠΊΠ°ΠΊ сокращСниС:

// (ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ вСсь ΠΊΠΎΠ΄ Π½ΠΈΠΆΠ΅ находится Π² ΠΎΠ΄Π½ΠΎΠΉ области видимости) var forEach = Array.prototype.forEach; // ... forEach.call(node.childNodes, function(child) { // Π΄Π΅Π»Π°Π΅ΠΌ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ child });
Если Π² массивоподобном ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ имССтся ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, Ρ‚ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ явно ΠΈΠ»ΠΈ нСявно для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ способом, ΠΊΠ°ΠΊ ΠΈ для настоящих массивов.

2. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² настоящий массив

Π•ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½, ΠΎΡ‡Π΅Π½ΡŒ простой, способ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массивоподобного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°: ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² настоящий массив ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любой ΠΈΠ· рассмотрСнных Π²Ρ‹ΡˆΠ΅ способов ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° настоящих массивов. Для прСобразования ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Array.prototype.slice , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ массивоподобному ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ. ДСлаСтся это ΠΎΡ‡Π΅Π½ΡŒ просто, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅:

Var trueArray = Array.prototype.slice.call(arrayLikeObject, 0);
НапримСр, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ NodeList Π² настоящий массив, Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:

Var divs = Array.prototype.slice.call(document.querySelectorAll("div"), 0);
Update : Как Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ΠΎ Π² коммСнтариях

ΠœΠ°ΡΡΠΈΠ²Ρ‹

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

ΠžΡ‚ΡΡ‡Π΅Ρ‚ индСксов массивов Π² языкС JavaScript начинаСтся с нуля ΠΈ для Π½ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ 32-Π±ΠΈΡ‚Π½Ρ‹Π΅ Ρ†Π΅Π»Ρ‹Π΅ числа - ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива ΠΈΠΌΠ΅Π΅Ρ‚ индСкс 0. ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² JavaScript ΡΠ²Π»ΡΡŽΡ‚ΡΡ динамичСскими: ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒΡΡ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости; Π½Π΅Ρ‚ нСобходимости ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ фиксированныС Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ массивов ΠΏΡ€ΠΈ ΠΈΡ… создании ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ².

ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² языкС JavaScript - это спСциализированная Ρ„ΠΎΡ€ΠΌΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π° индСксы массивов ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Ρ‡ΡƒΡ‚ΡŒ большС, Ρ‡Π΅ΠΌ просто ΠΈΠΌΠ΅Π½Π° свойств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎ совпадСнию ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами.

БозданиС массивов

Π›Π΅Π³Ρ‡Π΅ всСго ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой простой список Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… запятыми элСмСнтов массива Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках. ЗначСния Π² Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π΅ массива Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ константами - это ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ выраТСния, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

Var empty = ; // ΠŸΡƒΡΡ‚ΠΎΠΉ массив var numbers = ; // Массив с ΠΏΡΡ‚ΡŒΡŽ числовыми элСмСнтами var misc = [ 1.1, true, "a", ]; // 3 элСмСнта Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² + Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰Π°Ρ запятая var base = 1024; var table = ; // Массив с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ var arrObj = [, ]; // 2 массива Π²Π½ΡƒΡ‚Ρ€ΠΈ, содСрТащиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

Бинтаксис Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² массивов позволяСт Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΡƒΡŽ Π·Π°ΠΏΡΡ‚ΡƒΡŽ, Ρ‚.Π΅. Π»ΠΈΡ‚Π΅Ρ€Π°Π» [,] соотвСтствуСт массиву с двумя элСмСнтами, Π° Π½Π΅ с трСмя.

Π”Ρ€ΡƒΠ³ΠΎΠΉ способ создания массива состоит Π² Π²Ρ‹Π·ΠΎΠ²Π΅ конструктора Array() . Π’Ρ‹Π·Π²Π°Ρ‚ΡŒ конструктор ΠΌΠΎΠΆΠ½ΠΎ трСмя Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ способами:

    Π’Ρ‹Π·Π²Π°Ρ‚ΡŒ конструктор Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²:

    Var arr = new Array();

    Π’ этом случаС Π±ΡƒΠ΄Π΅Ρ‚ создан пустой массив, эквивалСнтный Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρƒ .

    Π’Ρ‹Π·Π²Π°Ρ‚ΡŒ конструктор с СдинствСнным числовым Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΌ Π΄Π»ΠΈΠ½Ρƒ массива:

    Var arr = new Array(10);

    Π’ этом случаС Π±ΡƒΠ΄Π΅Ρ‚ создан пустой массив ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹. Вакая Ρ„ΠΎΡ€ΠΌΠ° Π²Ρ‹Π·ΠΎΠ²Π° конструктора Array() ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ распрСдСлСния памяти ΠΏΠΎΠ΄ массив, Ссли Π·Π°Ρ€Π°Π½Π΅Π΅ извСстно количСство Π΅Π³ΠΎ элСмСнтов. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ этом Π² массивС Π½Π΅ сохраняСтся Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

    Π―Π²Π½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² Π²Ρ‹Π·ΠΎΠ²Π΅ конструктора значСния ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ элСмСнтов массива ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ нСчисловой элСмСнт:

    Var arr = new Array(5, 4, 3, 2, 1, "тСст");

    Π’ этом случаС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ конструктора становятся значСниями элСмСнтов Π½ΠΎΠ²ΠΎΠ³ΠΎ массива. ИспользованиС Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² массивов практичСски всСгда ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ конструктора Array().

Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись элСмСнтов массива

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

// Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ массив с ΠΎΠ΄Π½ΠΈΠΌ элСмСнтом var arr = ["world"]; // ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ элСмСнт 0 var value = arr; // Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² элСмСнт 1 arr = 3.14; // Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² элСмСнт 2 i = 2; arr[i] = 3; // Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² элСмСнт 3 arr = "ΠΏΡ€ΠΈΠ²Π΅Ρ‚"; // ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ элСмСнты 0 ΠΈ 2, Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² элСмСнт 3 arr] = arr;

Напомню, Ρ‡Ρ‚ΠΎ массивы ΡΠ²Π»ΡΡŽΡ‚ΡΡ спСциализированной Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠšΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для доступа ΠΊ элСмСнтам массива, Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для доступа ΠΊ свойствам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ JavaScript ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² скобках числовыС индСксы Π² строки - индСкс 1 прСвращаСтся Π² строку "1" - Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ строки ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π° свойств.

Π’ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ числовых индСксов Π² строки Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ особСнного: Ρ‚ΠΎ ΠΆΠ΅ самоС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄Π΅Π»Ρ‹Π²Π°Ρ‚ΡŒ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ:

Var obj = {}; // Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ простой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ obj = "one"; // Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ массивов состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ использовании ΠΈΠΌΠ΅Π½ свойств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами, массивы автоматичСски ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства length . НапримСр, Π²Ρ‹ΡˆΠ΅ Π±Ρ‹Π» создан массив arr с СдинствСнным элСмСнтом. Π—Π°Ρ‚Π΅ΠΌ Π±Ρ‹Π»ΠΈ присвоСны значСния Π΅Π³ΠΎ элСмСнтам с индСксами 1, 2 ΠΈ 3. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ этих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства length массива измСнилось ΠΈ стало Ρ€Π°Π²Π½Ρ‹ΠΌ 4.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒ индСксы Π² массивС ΠΎΡ‚ ΠΈΠΌΠ΅Π½ свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ВсС индСксы ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ свойств, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ свойства с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, прСдставлСнными Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами ΡΠ²Π»ΡΡŽΡ‚ΡΡ индСксами. ВсС массивы ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊ Π½ΠΈΠΌ свойства с Π»ΡŽΠ±Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ. Однако Ссли Π²Ρ‹ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚Π΅ свойства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ индСксами массива, массивы Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΡŽΡ‚ Π½Π° это, обновляя Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства length ΠΏΡ€ΠΈ нСобходимости.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² качСствС индСксов массивов допускаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈ Π½Π΅ Ρ†Π΅Π»Ρ‹Π΅ числа. Π’ этом случаС числа ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π° свойств.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов массива

ΠœΡ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎ самый простой способ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнты Π² массив Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ значСния Π½ΠΎΠ²Ρ‹ΠΌ индСксам. Для добавлСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ элСмСнтов Π² ΠΊΠΎΠ½Π΅Ρ† массива ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ push() :

Var arr = ; // Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ пустой массив arr.push("zero"); // Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½Π΅Ρ† arr.push("one",2); // Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ Π΄Π²Π° значСния

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнт Π² ΠΊΠΎΠ½Π΅Ρ† массива ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅, присвоив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнту arr. Для вставки элСмСнта Π² Π½Π°Ρ‡Π°Π»ΠΎ массива ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ unshift() , ΠΏΡ€ΠΈ этом ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты Π² массивС ΡΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ с Π±ΠΎΠ»Π΅Π΅ высокими индСксами.

Π£Π΄Π°Π»ΡΡ‚ΡŒ элСмСнты массива ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° delete, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ свойства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

Var arr = ; delete arr; 2 in arr; // false, индСкс 2 Π² массивС Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ arr.length; // 3: ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ delete Π½Π΅ измСняСт свойство length массива

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ (Π½ΠΎ нСсколько отличаСтся) присваиваниС значСния undefined этому элСмСнту. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° delete ΠΊ элСмСнту массива Π½Π΅ измСняСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства length ΠΈ Π½Π΅ сдвигаСт Π²Π½ΠΈΠ· элСмСнты с Π±ΠΎΠ»Π΅Π΅ высокими индСксами, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ пустоту, ΠΎΡΡ‚Π°Π²ΡˆΡƒΡŽΡΡ послС удалСния элСмСнта.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ элСмСнты Π² ΠΊΠΎΠ½Ρ†Π΅ массива простым присваиваниСм Π½ΠΎΠ²ΠΎΠ³ΠΎ значСния свойству length. ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ pop() (ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ push()), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ массива Π½Π° 1 ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ элСмСнта. Π’Π°ΠΊΠΆΠ΅ имССтся ΠΌΠ΅Ρ‚ΠΎΠ΄ shift() (ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ unshift()), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ удаляСт элСмСнт Π² Π½Π°Ρ‡Π°Π»Π΅ массива. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° delete, ΠΌΠ΅Ρ‚ΠΎΠ΄ shift() сдвигаСт всС элСмСнты Π²Π½ΠΈΠ· Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π½ΠΈΠΆΠ΅ ΠΈΡ… Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… индСксов.

НаконСц сущСствуСт ΠΌΠ½ΠΎΠ³ΠΎΡ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ splice() , ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ, ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈ Π·Π°ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ элСмСнты массивов. Он измСняСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства length ΠΈ сдвигаСт элСмСнты массива с Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠΌΠΈ ΠΈΠ»ΠΈ высокими индСксами ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости. ВсС эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅.

ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

JavaScript Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ «настоящиС» ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы, Π½ΠΎ позволяСт Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ массивов ΠΈΠ· массивов. Для доступа ΠΊ элСмСнту Π΄Π°Π½Π½Ρ‹Ρ… Π² массивС массивов достаточно Π΄Π²Π°ΠΆΠ΄Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ .

НапримСр, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ пСрСмСнная matrix - это массив массивов чисСл. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт matrix[x] - это массив чисСл. Для доступа ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ числу Π² массивС ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ matrix[x][y]. НиТС приводится ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π³Π΄Π΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ умноТСния:

// Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив var table = new Array(10); // Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 10 строк for(var i = 0; i

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Array

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ ECMAScript 3 опрСдСляСт Π² составС Array.prototype мноТСство ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ доступны ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ любого массива. Π­Ρ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ прСдставлСны Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π°Ρ….

ΠœΠ΅Ρ‚ΠΎΠ΄ join()

ΠœΠ΅Ρ‚ΠΎΠ΄ Array.join() ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ всС элСмСнты массива Π² строки, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΈΡ… ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΡƒΡŽΡΡ строку. Π’ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ строку, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для отдСлСния элСмСнтов Π² строкС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Если строка-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ запятая. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π΄Π°Π΅Ρ‚ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ строку "1,2,3":

Var arr = ; arr.join(); // "1,2,3" arr.join("-"); // "1-2-3"

ΠœΠ΅Ρ‚ΠΎΠ΄ reverse()

ΠœΠ΅Ρ‚ΠΎΠ΄ Array.reverse() мСняСт порядок слСдования элСмСнтов Π² массивС Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ пСрСупорядочСнный массив. ΠŸΠ΅Ρ€Π΅ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° выполняСтся нСпосрСдствСнно Π² исходном массивС, Ρ‚.Π΅. этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ создаСт Π½ΠΎΠ²Ρ‹ΠΉ массив с пСрСупорядочСнными элСмСнтами, Π° пСрСупорядочиваСт ΠΈΡ… Π² ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ массивС. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚, Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ reverse() ΠΈ join(), Π΄Π°Π΅Ρ‚ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ строку "3,2,1":

Var arr = ; arr.reverse().join(); // "3,2,1"

ΠœΠ΅Ρ‚ΠΎΠ΄ sort()

ΠœΠ΅Ρ‚ΠΎΠ΄ Array.sort() сортируСт элСмСнты Π² исходном массивС ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ отсортированный массив. Если ΠΌΠ΅Ρ‚ΠΎΠ΄ sort() вызываСтся Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², сортировка выполняСтся Π² Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½ΠΎΠΌ порядкС (для сравнСния элСмСнты Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² строки, Ссли это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ). НСопрСдСлСнныС элСмСнты пСрСносятся Π² ΠΊΠΎΠ½Π΅Ρ† массива.

Для сортировки Π² ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ ΠΈΠ½ΠΎΠΌ порядкС, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΎΡ‚ Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½ΠΎΠ³ΠΎ, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ sort() ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ сравнСния Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Π­Ρ‚Π° функция устанавливаСт, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· Π΄Π²ΡƒΡ… Π΅Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π½ΡŒΡˆΠ΅ Π² отсортированном спискС. Если ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ, функция сравнСния Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число. Если ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π·Π° Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ Π² отсортированном массивС, Ρ‚ΠΎ функция Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ число большС нуля. А Ссли Π΄Π²Π° значСния эквивалСнтны (Ρ‚.Π΅. порядок ΠΈΡ… слСдования Π½Π΅ Π²Π°ΠΆΠ΅Π½), функция сравнСния Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ 0:

Var arr = ; arr.sort(); // Алфавитный порядок: 1111, 222, 33, 4 arr.sort(function(a,b) { // Числовой порядок: 4, 33, 222, 1111 return a-b; // Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0 // Π² зависимости ΠΎΡ‚ порядка сортировки a ΠΈ b }); // Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ, ΠΎΡ‚ большСго ΠΊ ΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΌΡƒ arr.sort(function(a,b) {return b-a});

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, насколько ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² этом Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ Π½Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Ѐункция сравнСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ здСсь, поэтому Π½Π΅Ρ‚ нСобходимости Π΄Π°Π²Π°Ρ‚ΡŒ Π΅ΠΉ имя.

ΠœΠ΅Ρ‚ΠΎΠ΄ concat()

ΠœΠ΅Ρ‚ΠΎΠ΄ Array.concat() создаСт ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ массив, содСрТащий элСмСнты исходного массива, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ concat(), ΠΈ значСния всСх Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ concat(). Если ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ· этих Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² сам являСтся массивом, Π΅Π³ΠΎ элСмСнты Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ массив. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ рСкурсивного прСвращСния массива ΠΈΠ· массивов Π² ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π½Π΅ происходит. ΠœΠ΅Ρ‚ΠΎΠ΄ concat() Π½Π΅ измСняСт исходный массив. НиТС приводится нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:

Var arr = ; arr.concat(4, 5); // Π’Π΅Ρ€Π½Π΅Ρ‚ arr.concat(); // Π’Π΅Ρ€Π½Π΅Ρ‚ arr.concat(,) // Π’Π΅Ρ€Π½Π΅Ρ‚ arr.concat(4, ]) // Π’Π΅Ρ€Π½Π΅Ρ‚ ]

ΠœΠ΅Ρ‚ΠΎΠ΄ slice()

ΠœΠ΅Ρ‚ΠΎΠ΄ Array.slice() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚, ΠΈΠ»ΠΈ подмассив, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массива. Π”Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ† Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ массив содСрТит элСмСнт, Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠΊΠ°Π·Π°Π½ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅, плюс всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты, Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ (Π½ΠΎ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ) элСмСнта, Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠΊΠ°Π·Π°Π½ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅.

Если ΡƒΠΊΠ°Π·Π°Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ массив содСрТит всС элСмСнты ΠΎΡ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° массива. Если ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΎΠ½ опрСдСляСт Π½ΠΎΠΌΠ΅Ρ€ элСмСнта ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠ½Ρ†Π° массива. Π’Π°ΠΊ, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρƒ -1 соотвСтствуСт послСдний элСмСнт массива, Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρƒ -3 - Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ элСмСнт массива с ΠΊΠΎΠ½Ρ†Π°. Π’ΠΎΡ‚ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:

Var arr = ; arr.slice(0,3); // Π’Π΅Ρ€Π½Π΅Ρ‚ arr.slice(3); // Π’Π΅Ρ€Π½Π΅Ρ‚ arr.slice(1,-1); // Π’Π΅Ρ€Π½Π΅Ρ‚ arr.slice(-3,-2); // Π’Π΅Ρ€Π½Π΅Ρ‚

ΠœΠ΅Ρ‚ΠΎΠ΄ splice()

ΠœΠ΅Ρ‚ΠΎΠ΄ Array.splice() - это ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ вставку ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов массива. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² slice() ΠΈ concat(), ΠΌΠ΅Ρ‚ΠΎΠ΄ splice() измСняСт исходный массив, ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ½ Π±Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ splice() ΠΈ slice() ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ ΠΈΠΌΠ΅Π½Π°, Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

ΠœΠ΅Ρ‚ΠΎΠ΄ splice() ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ элСмСнты ΠΈΠ· массива, Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ элСмСнты ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠ±Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ массива ΠΏΡ€ΠΈ нСобходимости ΡΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ послС вставки ΠΈΠ»ΠΈ удалСния ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π»Π°ΡΡŒ нСпрСрывная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° splice() опрСдСляСт ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π² массивС, начиная с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ вставка ΠΈ/ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ опрСдСляСт количСство элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ (Π²Ρ‹Ρ€Π΅Π·Π°Π½Ρ‹) ΠΈΠ· массива. Если Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΎΠΏΡƒΡ‰Π΅Π½, ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ всС элСмСнты массива ΠΎΡ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° массива. ΠœΠ΅Ρ‚ΠΎΠ΄ splice() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… элСмСнтов ΠΈΠ»ΠΈ (Ссли Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· элСмСнтов Π½Π΅ Π±Ρ‹Π» ΡƒΠ΄Π°Π»Π΅Π½) пустой массив.

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° splice() ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ элСмСнты массива, ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ. Π—Π° этими Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ любоС количСство Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ… элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ вставлСны Π² массив, начиная с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅.

Var arr = ; arr.splice(4); // Π’Π΅Ρ€Π½Π΅Ρ‚ , arr = arr.splice(1,2); // Π’Π΅Ρ€Π½Π΅Ρ‚ , arr = arr.splice(1,1); // Π’Π΅Ρ€Π½Π΅Ρ‚ ; arr = arr = ; arr.splice(2,0,"a","b"); // Π’Π΅Ρ€Π½Π΅Ρ‚ ; arr =

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ push() ΠΈ pop()

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ push() ΠΈ pop() ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с массивами ΠΊΠ°ΠΊ со стСками. ΠœΠ΅Ρ‚ΠΎΠ΄ push() добавляСт ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько Π½ΠΎΠ²Ρ‹Ρ… элСмСнтов Π² ΠΊΠΎΠ½Π΅Ρ† массива ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ Π½ΠΎΠ²ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ. ΠœΠ΅Ρ‚ΠΎΠ΄ pop() выполняСт ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ - удаляСт послСдний элСмСнт массива, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ массива ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ΅ ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π° эти ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ исходный массив, Π° Π½Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ копию.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ unshift() ΠΈ shift()

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ unshift() ΠΈ shift() Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ push() ΠΈ pop(), Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π²ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΈ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ элСмСнты Π² Π½Π°Ρ‡Π°Π»Π΅ массива, Π° Π½Π΅ Π² ΠΊΠΎΠ½Ρ†Π΅. ΠœΠ΅Ρ‚ΠΎΠ΄ unshift() смСщаСт ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты Π² сторону Π±ΠΎΠ»ΡŒΡˆΠΈΡ… индСксов для освобоТдСния мСста, добавляСт элСмСнт ΠΈΠ»ΠΈ элСмСнты Π² Π½Π°Ρ‡Π°Π»ΠΎ массива ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ массива. ΠœΠ΅Ρ‚ΠΎΠ΄ shift() удаляСт ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива, смСщая всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π²Π½ΠΈΠ·, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π½ΡΡ‚ΡŒ мСсто, освободившССся Π² Π½Π°Ρ‡Π°Π»Π΅ массива.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим JavaScript-массив, Π΅Π³ΠΎ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅. JavaScript являСтся идСально-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ созданным для программирования. ЀактичСски ΠΎΠ½ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ язык ECMAScript (эталон ECMA-262).

Π“Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ JavaScript? Π•Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ Π² качСствС встраиваСмого языка для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρƒ прилоТСния. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ…: ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΌ ΠΊΠ°ΠΊ сцСнарный язык, ΠΏΡ€ΠΈΠ΄Π°ΡŽΡ‰ΠΈΠΉ Π²Π΅Π±-страницам ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ.

Π’Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΠΌΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΌΠΈ Ρ‡Π΅Ρ€Ρ‚Π°ΠΌΠΈ этого ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° ΡΠ²Π»ΡΡŽΡ‚ΡΡ динамичная ΠΈ слабая типизация, Π°Π²Ρ‚ΠΎΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, идСальноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ разряда.

Π’ΠΎΠΎΠ±Ρ‰Π΅, Π½Π° JavaScript повлияли Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, вСдь ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ язык, ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ Π½Π° Java, Π½ΠΎ Π»Ρ‘Π³ΠΊΠΈΠΉ для использования программистами. ΠšΡΡ‚Π°Ρ‚ΠΈ, языком JavaScript Π½Π΅ Π²Π»Π°Π΄Π΅Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ прСдприятиС ΠΈΠ»ΠΈ организация, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ Π½Π΅ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ Π½Π° ряд ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… стилСй, примСняСмых Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ.

НСобходимо ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ JavaScript - зарСгистрированный Ρ‚ΠΎΠ²Π°Ρ€Π½Ρ‹ΠΉ Π·Π½Π°ΠΊ ΠΊΠΎΠ½Ρ†Π΅Ρ€Π½Π° Oracle Corporation.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массив?

Массивом Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΏΡ€ΠΎΠ½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ значСния. КаТдоС Ρ‚Π°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ имСнуСтся ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ массива, Π° Ρ†ΠΈΡ„Ρ€Ρƒ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ связываСтся ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ индСксом. JavaScript-массив Π½Π΅Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄Π΅Ρ‚Π°Π»ΠΈ массива ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ ΡƒΠ³ΠΎΠ΄Π½ΠΎ Ρ‚ΠΈΠΏ, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ Ρ€Π°Π·Π½Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΌΡƒ массиву, ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹.

ΠšΡ€ΠΎΠΌΠ΅ этого, JavaScript-массив являСтся динамичСским, Π° это Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ фиксированный Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π΅Ρ‚ нСобходимости ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ. Π’Π΅Π΄ΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ‚Π²ΠΎ массива

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ язык JavaScript, ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ. Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ для этого Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ прСдусматриваСт ΠΈΠ·Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π° - ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобок, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½ список Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ, ΠΏΠΎΠ΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… запятыми.

  • var empty = ; //пустой массив;
  • var numers = ; //массив с ΠΏΡΡ‚ΡŒΡŽ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ;
  • var diff = ; //массив с трСмя элСмСнтами Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, здСсь Π½Π΅ трСбуСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ значСния Π±Ρ‹Π»ΠΈ простыми (строки ΠΈ числа). Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ Π»ΡŽΠ±Ρ‹Π΅ ΠΈΠ½Ρ‹Π΅ выраТСния, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½Ρ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹, ΠΈΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ массивы.

Π’Ρ‚ΠΎΡ€Ρ‹ΠΌ способом создания массива являСтся Π²Ρ‹Π·ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° Array(). ΠŸΡ€ΠΈΠ³Π»Π°ΡΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ трСмя ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ:

  • Π’Ρ‹Π·ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° Π±Π΅Π· Π΄ΠΎΠ²ΠΎΠ΄ΠΎΠ²: var b - new Array(). Π—Π΄Π΅ΡΡŒ прСдусмотрСно созданиС пустого массива, эквивалСнтного пустому Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρƒ .
  • ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ явно ΠΈΠΌΠ΅Π΅Ρ‚ указания значСния n ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² массива: var b = new Array (1, 3, 5, 8, «строка», true). Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΡƒ прСподносится список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½ΠΎΠ²ΠΎΠ³ΠΎ массива. АргумСнты ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π² массив Π² Ρ‚ΠΎΠΌ располоТСнии, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡƒΠΊΠ°Π·Π°Π½Ρ‹.
  • ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ области для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ приписывания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ дСлаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ указания ΠΏΡ€ΠΈ выявлСнии массива ΠΎΠ΄Π½ΠΎΠ³ΠΎ числа, Π·Π°ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½ΠΎΠ³ΠΎ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки: var b = new Array(5). Π”Π°Π½Π½Ρ‹ΠΉ способ выявлСния ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ массиву Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ количСства ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… значится ΠΊΠ°ΠΊ undefined) с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ приписывания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² процСссС излоТСния. Π’Π°ΠΊΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚ Javascript-массив, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄Π»ΠΈΠ½Π° извСстна Π·Π°Ρ€Π°Π½Π΅Π΅.

Π—Π°ΠΏΠΈΡΡŒ, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ массива

Π”ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ массива ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° . ΠšΡΡ‚Π°Ρ‚ΠΈ, всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² JavaScript, начиная с нуля, Π½ΡƒΠΌΠ΅Ρ€ΡƒΡŽΡ‚ΡΡ. Для получСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ элСмСнта, Π΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ€ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π² Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ. А Ρ‡Ρ‚ΠΎΠ±Ρ‹ JavaScript Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² массив, достаточно Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ.

НСобходимо ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² массивах JavaScript ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ количСство элСмСнтов любого Π²ΠΈΠ΄Π°.

Π”Π»ΠΈΠ½Π° массива

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Π”Π»ΠΈΠ½Π° массива Π²ΠΎΠΎΠ±Ρ‰Π΅ являСтся интСрСсным явлСниСм. Рассмотрим Π΅Π³ΠΎ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅ΠΉ. ВсС массивы, ΠΊΠ°ΠΊ сконструированныС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° Array(), Ρ‚Π°ΠΊ ΠΈ выявлСнныС благодаря Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρƒ массива, ΠΈΠΌΠ΅ΡŽΡ‚ спСцифичСскоС свойство length, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΡ‚Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ±Ρ‰Π΅Π΅ количСство сбСрСгаСмых элСмСнтов. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² массивС ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ (ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅ΠΌΡ‹Π΅ undefined), Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π²ΡƒΡ‡ΠΈΡ‚ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: качСство length всСгда большС Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ, Ρ‡Π΅ΠΌ самый большой Π½ΠΎΠΌΠ΅Ρ€ (индСкс) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° массива. ΠšΠ°Ρ‡Π΅ΡΡ‚Π²ΠΎ length коррСктируСтся автоматичСски, ΠΎΡΡ‚Π°Π²Π°ΡΡΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ ΠΏΡ€ΠΈ появлСнии Π² массивС Π½ΠΎΠ²Ρ‹Ρ… Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ.

Π§Ρ‚ΠΎΠ±Ρ‹ появился Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ массива, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свойство length.

ПослСдняя Π΄Π΅Ρ‚Π°Π»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ индСкс Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ мСньшС Ρ‡Π΅ΠΌ, Ρ€Π°Π·ΠΌΠ΅Ρ€ массива. Π’Π΅Π΄ΡŒ отсчёт Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ всСгда с нуля. ΠžΡ… ΡƒΠΆ этот JavaScript! Π”Π»ΠΈΠ½Π° массива Π΅Π³ΠΎ зависит ΠΎΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ количСства элСмСнтов. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ссли Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, сколько ΠΈΡ… Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ, Π½ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰Π΅ΠΌΡƒ элСмСнту массива, Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ запись: v.length - 1.

ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ массива

ΠžΡ‡Π΅Π½ΡŒ часто свойство length ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ массива Π² Ρ†ΠΈΠΊΠ»Π΅:

  • var fruits = [Β«ΠΊΠ»ΡƒΠ±Π½ΠΈΠΊΠ°Β», «пСрсик», «яблоко», Β«Π±Π°Π½Π°Π½Β»];
  • for(var I = 0; i < fruits.lenght; i++);
  • document.write(fruits[i] + Β«...Β»).

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставляСтся, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π΄Π΅Ρ‚Π°Π»ΠΈ, Π²Π»Π°Π΄Π΅ΡŽΡ‰Π΅ΠΉ Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ индСксом. Если это Π½Π΅ Ρ‚Π°ΠΊ, ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта массива Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ Π»ΠΈ ΠΎΠ½.

Π¦ΠΈΠΊΠ» Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΈ усСчСниС массива

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ язык JavaScript строку Π² массив Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ? Π’ процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами, Π΄Π»ΠΈΠ½Π° качСства length автоматичСски ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ΡΡ, Π²ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π½Π°ΠΌ приходится ΠΎΠ± этом Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. НСобходимо Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΉ Π΄Π΅Ρ‚Π°Π»ΠΈ - свойство length Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния доступно, Π½ΠΎ ΠΈ для записи. Если качСству length ΠΏΡ€ΠΈΠΏΠΈΡΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ уступаСт ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ, Ρ‚ΠΎ массив ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ Π΄ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹. Π›ΡŽΠ±Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π½Π΅ входящиС Π² Π½ΠΎΠ²Ρ‹ΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ индСксов, ΠΎΡ‚ΠΊΠΈΠ΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ, ΠΈ ΠΈΡ… значСния Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ, Π΄Π°ΠΆΠ΅ Ссли ΠΏΠΎΠ·Π΄Π½Π΅Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ length ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ - значСния Π½Π΅ ΠΎΡ‚Ρ€Π΅ΡΡ‚Π°Π²Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

Π’Π΅ΡΡŒΠΌΠ° просто ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ массив Ρ‚Π°ΠΊ: foo.length = 0.

Если качСство length Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ большим, Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Π½Ρ‹Π½Π΅ΡˆΠ½Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π² ΠΊΠΎΠ½Ρ†Π΅ массива появятся Π½ΠΎΠ²Ρ‹Π΅ нСустановлСнныС Π΄Π΅Ρ‚Π°Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Ρ‚ Π΅Π³ΠΎ Π΄ΠΎ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ массива

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ delete ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ массива Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ undefined, Π° ΠΎΠ½ ΠΏΡ€ΠΈ этом ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ сущСствованиС. Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт массива JavaScript Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ Π΄Π΅Ρ‚Π°Π»ΠΈ ΡΠΌΠ΅ΡΡ‚ΠΈΠ»ΠΈΡΡŒ Π½Π° освободившССся мСсто, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€Π΅Π΄ΡƒΠ³Π°Π΄Π°Π½Π½Ρ‹Ρ… способов массива. Бпособ Array.shift() Π»ΠΈΠΊΠ²ΠΈΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, pop() - Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π° способ splice() - ΠΎΠ΄ΠΈΠ½ Π»ΠΈΠ±ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π² любом мСстС массива.

ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅

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

АссоциативныС массивы

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ²Π°Ρ€Π½Ρ‹ΠΉ Π·Π½Π°ΠΊ JavaScript ассоциативныС массивы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚. Для этого Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π² Ρ‚Π΅ΠΎΡ€ΠΈΡŽ: массивы ассоциативныС ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ. Благодаря ΠΈΠΌ вмСсто индСксов ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ строки. ИспользованиС Ρ‚Π°ΠΊΠΈΡ… конструкций Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ свойства простого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ массива. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² JavaScript ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ способы опСрирования массивами ассоциативными, ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Ρ€Π΅ΠΆΠ΅, Ρ‡Π΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅. НСобходимо ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ всё ΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ.

Π’Ρ‹Π²ΠΎΠ΄ массива

А Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ Π² систСмС JavaScript? Π’Ρ‹Π²ΠΎΠ΄ массива Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ (Π½Π° экран ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π°), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π²ΠΎΠ΄ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² массива.

Если Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½ΡƒΠΆΠ½ΠΎ вывСсти значСния всСх ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Ρ‚ΠΎ для этого ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ for. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ пСрСмСнная-счётчик ΠΏΡ€Π°Π²ΠΈΠ» for ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ этом ΠΊΠ°ΠΊ индСкс ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° массива.

ΠžΡ‡ΠΈΡΡ‚ΠΊΠ°

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ массив JavaScript, Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π½ΡƒΠ»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Ρƒ:

  • var myArray = ;
  • myArray.length = 0.
  • clear: function() {;
  • this.length = 0;
  • return this;

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²

Ну Ρ‡Ρ‚ΠΎ ΠΆ, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Π΄Π°Π»Π΅Π΅ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ этот ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½Π΅ΠΉΡˆΠΈΠΉ язык JavaScript. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ массива ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ, ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ свойства ΠΈΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Но здСсь ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ отличия: ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ числовых свойств ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ качСство length, Π° ΠΏΡ€ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ свойства length ΠΌΠΎΠ³ΡƒΡ‚ Π»ΠΈΠΊΠ²ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ числовыС качСства. Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ установки качСств Ρƒ массивов являСтся Ρ‚Π°ΠΊΠΈΠΌ:

  • ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ нСизвСстного Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ свойства i, Ссли length Ρ€Π°Π²Π΅Π½ Π»ΠΈΠ±ΠΎ мСньшС i, length опрСдСляСтся Ρ€Π°Π²Π½Ρ‹ΠΌ i+1.
  • ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π΅ качСства length ΡΠΎΠ²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия: Ссли присвоСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ мСньшС нуля, Ρ‚ΠΎ кидаСтся RangeError. Π›ΠΈΠΊΠ²ΠΈΠ΄ΠΈΡ€ΡƒΡŽΡ‚ΡΡ всС числовыС качСства ΠΈ индСксы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π²Π½Ρ‹ Π½ΠΎΠ²ΠΎΠΌΡƒ length ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… большС.

Π’ΠΎΠΎΠ±Ρ‰Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт массива JavaScript нСслоТно. Π’Π΅Π΄ΡŒ, Π΄Π°ΠΆΠ΅ устанавливая length, Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ· Π½Π΅Π³ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ «лишниС» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. ΠžΡ‚ΡΡŽΠ΄Π° слСдуСт Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ очистки массива. Если присвоСнная пСрСмСнная пустого Π½ΠΎΠ²ΠΎΠ³ΠΎ массива ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π½Π΅ устроила, Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π½ΡƒΠ»ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Ρ‹Π½Π΅ΡˆΠ½ΠΈΠΉ, достаточно Π΅Π³ΠΎ качСству length ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ноль.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ unshift, shift, pop ΠΈ push

НСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ массива ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ для этого ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ встроСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. ИмСнно этот нюанс Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ качСства length ΠΈ отсутствиС Π² массивС пропусков. ΠšΡΡ‚Π°Ρ‚ΠΈ, ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ качСство length Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ числу ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

Бпособ push пСрСносит Π² ΠΊΠΎΠ½Π΅Ρ† массива ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ. Бпособ pop ΠΎΡ‚Π΄Π°Ρ‘Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈ удаляСт Π΅Π³ΠΎ.

Π’ΠΎΠΎΠ±Ρ‰Π΅ Π² Internet Explorer младшС восьмой вСрсии unshift ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ undefined, Π² ΠΈΠ½Ρ‹Ρ… Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ… - Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ length. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ ΠΎΡ‚ unshift Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π»ΡƒΡ‡ΡˆΠ΅ Π½Π΅ Π½Π°Π΄Π΅ΡΡ‚ΡŒΡΡ.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ликвидация Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Π² сСрСдинС массива

Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ массив JavaScript, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ? Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ способ splice ΠΈΠΌΠ΅Π΅Ρ‚ сигнатуру Array.prototype.splice.

Он ΠΈΠ· массива ΠΈΠ·Ρ‹ΠΌΠ°Π΅Ρ‚ deleteCount ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², начиная с показатСля start. Если ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π΄Π²ΡƒΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ‚ΠΎ всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² массивС Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ вмСсто Π»ΠΈΠΊΠ²ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ…. Если start минусовый, Ρ‚ΠΎ индСкс, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ возобновится ΠΈΠ·ΡŠΡΡ‚ΠΈΠ΅, Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ length + start. Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π² массив происходит ΠΈΠ· ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… элСмСнтов.

ЀактичСски, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ splice, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈΠ· сСрСдины массива Π»ΠΈΠ±ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ количСство Π² любоС мСсто массива.

Π’ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅, Ссли Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ с индСксом i, Π½ΡƒΠΆΠ½ΠΎ Ρƒ массива Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ splice с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ i ΠΈ 1.

Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρƒ способа splice Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΎΠ΄Π½ΠΈΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Ρ€Π°Π·Π½ΠΎΠ΅.

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π² Firefox, Π² послСдних вариациях Opera, Π² Safari ΠΈ Π² Chrome Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ·ΡŠΡΡ‚Ρ‹ всС Π΄Π΅Ρ‚Π°Π»ΠΈ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° массива.

Π’ IE Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈΠΊΠ²ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. Π’ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… вариациях Opera ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ - Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΡŠΡΡ‚Π° ΠΎΠ΄Π½Π° Π΄Π΅Ρ‚Π°Π»ΡŒ с индСксом start - 1. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ всСгда Π½ΡƒΠΆΠ½ΠΎ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

ΠšΠ»ΡŽΡ‡ΠΈ

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, изучая JavaScript, ассоциативныС массивы, ΠΊΠ°ΠΊ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ ΡƒΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈΠ· Π²ΠΈΠ΄Ρƒ. Π­Ρ‚ΠΎ абстрактный Π²ΠΈΠ΄ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (интСрфСйс ΠΊ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡΠ±Π΅Ρ€Π΅Π³Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Ρ‹ Π²ΠΈΠ΄Π° Β«(ΠΊΠ»ΡŽΡ‡, Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°)Β» ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ добавлСния ΠΏΠ°Ρ€Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ удалСния ΠΈ поиска ΠΏΠ°Ρ€Ρ‹ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ:

FIND (ΠΊΠ»ΡŽΡ‡).

INSERT (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠ»ΡŽΡ‡).

REMOVE (ΠΊΠ»ΡŽΡ‡).

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π² ассоциативном массивС Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ±Π΅Ρ€Π΅Π³Π°Ρ‚ΡŒΡΡ Π΄Π²Π΅ ΠΏΠ°Ρ€Ρ‹ с ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ. Π’ ΠΏΠ°Ρ€Π΅ k + v v называСтся Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΉ, ассоциированной с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ k. Π‘Π΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ° ΠΈ наимСнования Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… рСализациях Ρ‚Π°ΠΊΠΈΡ… массивов ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ.

Π’Π°ΠΊ, дСйствиС FIND (ΠΊΠ»ΡŽΡ‡) Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ, Π°ΡΡΠΎΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ, ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΈΠΉ спСцифичСский ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ UNDEF, ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°, ассоциированная с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ, отсутствуСт. Π”Π²Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… дСйствия Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ Ρ‚ΠΎΠΌ, ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π»ΠΈ Π±Ρ‹Π»Π° ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° эта опСрация).

Π’ΠΎΠΎΠ±Ρ‰Π΅, с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния интСрфСйса, ассоциативный массив ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ простой массив, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π² Π²ΠΈΠ΄Π΅ индСксов ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π΅Π»Ρ‹Π΅ числа, Π½ΠΎ ΠΈ значСния ΠΈΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² - ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, строки.

ΠšΡΡ‚Π°Ρ‚ΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚Π°ΠΊΠΈΡ… массивов имССтся Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ‚Ρ€Π°ΠΊΡ‚ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… языках высокого уровня, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ PHP, Perl, Ruby, Python, Tcl, JavaScript ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Для языков, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ встроСнныС срСдства Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ассоциативными массивами, создано колоссальноС число Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ассоциативного массива ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½Ρ‹ΠΉ справочник. Π’ Π΄Π°Π½Π½ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ являСтся комплСкс Β«Π€. И. О. + адрСс», Π° ΠΊΠ»ΡŽΡ‡ΠΎΠΌ - Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°. Один Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ хозяина, Π½ΠΎ ΠΎΠ΄ΠΈΠ½ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π»Π°Π΄Π΅Ρ‚ΡŒ нСсколькими Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ.

АссоциативныС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ

НСобходимо ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ самыС извСстныС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

  • EACH - Β«ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒΒ» ΠΏΠΎ всСм сбСрСгаСмым ΠΏΠ°Ρ€Π°ΠΌ.
  • CLEAR - ΠΈΠ·ΡŠΡΡ‚ΡŒ всС записи.
  • MIN - Π½Π°ΠΉΡ‚ΠΈ ΠΏΠ°Ρ€Ρƒ с наимСньшим ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ.
  • MAX - Π½Π°ΠΉΡ‚ΠΈ ΠΏΠ°Ρ€Ρƒ с наибольшим ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ.

Π’ послСдних Π΄Π²ΡƒΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ… Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π° ΠΊΠ»ΡŽΡ‡Π°Ρ… Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ дСйствиС сравнСния.

Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ассоциативных массивов

БущСствуСт мноТСство Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ массива ассоциативного. Бамая обычная рСализация ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ основана Π½Π° простом массивС, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Ρ‹ (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠ»ΡŽΡ‡). Для ускорСния поисковых дСйствий ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π΄Π°Π½Π½ΠΎΠ³ΠΎ массива ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ ΠΈ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Но это ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½ΡƒΠΆΠ½Ρ‹ΠΉ для добавлСния Π½ΠΎΠ²ΠΎΠΉ ΠΏΠ°Ρ€Ρ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Β«Ρ€Π°Π·Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΒ» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ массива, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΏΠΎΡΠ²ΠΈΠ²ΡˆΡƒΡŽΡΡ ΠΏΡƒΡΡ‚ΡƒΡŽ ячСйку ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ ΡΠ²Π΅ΠΆΡƒΡŽ запись.

НаиболСС извСстны Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π΄Π΅Ρ€Π΅Π²ΡŒΡΡ… поиска. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π² Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ Ρ‡ΠΈΡ‚Π°Π»ΡŒΠ½Π΅ STL языка C++ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ map Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° Π±Π°Π·Π΅ Ρ‡Ρ‘Ρ€Π½ΠΎ-красного Π΄Π΅Ρ€Π΅Π²Π°. Π’ стилях Ruby, Tcl, Python примСняСтся ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²ΠΈΠ΄ΠΎΠ² Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ ΠΈΠ½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

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

Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² рСализациях, Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ…ΡΡ Π½Π° Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…, срСднСС врСмя опрСдСляСтся ΠΊΠ°ΠΊ О(1), Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ Π² дСйствиях, Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ…ΡΡ Π½Π° Π΄Π΅Ρ€Π΅Π²ΡŒΡΡ… поиска. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΡ€ΠΈ этом Π½Π΅ гарантируСтся высокоскоростноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ: врСмя дСйствия INSERT Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС обозначаСтся ΠΊΠ°ΠΊ О(n). ΠŸΡ€ΠΎΡ†Π΅ΡΡ INSERT выполняСтся Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя, ΠΊΠΎΠ³Π΄Π° коэффициСнт заполнСния достигаСт Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠ΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈ появляСтся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ рСконструкции индСкса Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

ΠšΡΡ‚Π°Ρ‚ΠΈ, эти Ρ…ΡΡˆ-вСдомости ΠΏΠ»ΠΎΡ…ΠΈ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° ΠΈΡ… Π±Π°Π·Π΅ нСльзя ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ быстрыС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ дСйствия MAX, MIN ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΠ±Ρ…ΠΎΠ΄Π° всСх сбСрСгаСмых ΠΏΠ°Ρ€ Π² порядкС убывания Π»ΠΈΠ±ΠΎ возрастания ΠΊΠ»ΡŽΡ‡Π΅ΠΉ.