ΠžΠ±Ρ…ΠΎΠ΄ массива js: Массив: ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°ΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами (Array) Π½Π° JavaScript

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами Π½Π° JavaScript

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅:

  1. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами Π² JavaScript
  2. ЭкзСмпляры массива Π² JavaScript

Массив (Array) это мноТСство ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ элСмСнтов, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Ρ… Π² Π΅Π΄ΠΈΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΡƒ. ΠŸΡ€ΠΎΡΡ‚Ρ‹ΠΌΠΈ словами это упорядочный список ΠΈΠ· элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ имССю свой Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ любая Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° FrontEnd вСрсии сайта Π½Π΅ обходится Π±Π΅Π· массивов, поэтому Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с массивами Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΌΠ΅Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ программист!


ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами Π² JavaScript

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


Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Array


ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Π½Ρ‹ массива


ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ созданиС массива Array


Доступ ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ массива ΠΏΠΎ индСксу (порядковому Π½ΠΎΠΌΠ΅Ρ€Ρƒ)


ΠžΠ±Ρ…ΠΎΠ΄ массива Π² JavaScript


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


Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ послСднСго элСмСнта массива


Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта массива


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


Поиск Π½ΠΎΠΌΠ΅Ρ€Π° элСмСнта Π² массивС


Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ индСксом


Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… элСмСнтов, начиная с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ индСкса


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


ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ массива Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚


ЭкзСмпляры массива Π² JavaScript

ВсС экзСмпляры массива Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ Array. prototype ΠΈ Π»ΡŽΠ±Ρ‹Π΅ измСнСния Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° конструктора массива Π·Π°Ρ‚Ρ€ΠΎΠ½Π΅Ρ‚ всС экзСмпляры Array.

Бвойства

Array.prototype.constructor ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Array.prototype.length ΠžΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ количСство элСмСнтов Π² массивС.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ измСнСния

Array.prototype.copyWithin() ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ элСмСнтов массива Π²Π½ΡƒΡ‚Ρ€ΠΈ массива.

Array.prototype.fill() ЗаполняСт всС элСмСнты массива ΠΎΡ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ индСкса Π΄ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ индСкса ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ.

Array.prototype.pop() УдаляСт послСдний элСмСнт ΠΈΠ· массива ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ.

Array.prototype.push() ДобавляСт ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ элСмСнтов Π² ΠΊΠΎΠ½Π΅Ρ† массива ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ массива.

Array.prototype.reverse() ΠŸΠ΅Ρ€Π΅Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ порядок элСмСнтов Π² массивС β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт становится послСдним, Π° послСдний β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ.

Array.prototype.shift() УдаляСт ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΈΠ· массива ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ.

Array.prototype.sort() Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ элСмСнты массива Π½Π° мСстС ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ отсортированный массив.

Array.prototype.splice() ДобавляСт ΠΈ/ΠΈΠ»ΠΈ удаляСт элСмСнты ΠΈΠ· массива.

Array.prototype.unshift() ДобавляСт ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ элСмСнтов Π² Π½Π°Ρ‡Π°Π»ΠΎ массива ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ массива.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ доступа ΠΊ массиву

Array.prototype.concat() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ массив, состоящий ΠΈΠ· Π΄Π°Π½Π½ΠΎΠ³ΠΎ массива, соСдинённого с Π΄Ρ€ΡƒΠ³ΠΈΠΌ массивом ΠΈ/ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ (списком массивов/Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ).

Array.prototype.includes() ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚, содСрТится Π»ΠΈ Π² массивС ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ элСмСнт, возвращая, соотвСтствСнно, true ΠΈΠ»ΠΈ false.

Array.prototype.join() ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ всС элСмСнты массива Π² строку.

Array.prototype.slice() Π˜Π·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ Π² Π²ΠΈΠ΄Π΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ массива.

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

Array.prototype.toString() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строковоС прСдставлСниС массива ΠΈ Π΅Π³ΠΎ элСмСнтов. ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Object.

prototype.toString().

Array.prototype.toLocaleString() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ строковоС прСдставлСниС массива ΠΈ Π΅Π³ΠΎ элСмСнтов. ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Object.prototype.toLocaleString().

Array.prototype.indexOf() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ (наимСньший) индСкс элСмСнта Π²Π½ΡƒΡ‚Ρ€ΠΈ массива, Ρ€Π°Π²Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ; ΠΈΠ»ΠΈ -1, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.

Array.prototype.lastIndexOf() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ послСдний (наибольший) индСкс элСмСнта Π²Π½ΡƒΡ‚Ρ€ΠΈ массива, Ρ€Π°Π²Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ; ΠΈΠ»ΠΈ -1, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±Ρ…ΠΎΠ΄Π° массива

Array.prototype.forEach() Π’Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π² массивС.

Array.prototype.entries() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° массива Array Iterator, содСрТащий ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡ / Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ индСкса Π² массивС.

Array.prototype.every() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true, Ссли ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π² массивС удовлСтворяСт ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Array.prototype.some() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true, Ссли хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ элСмСнт Π² массивС удовлСтворяСт ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Array.prototype.filter() Π‘ΠΎΠ·Π΄Π°Ρ‘Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ массив со всСми элСмСнтами этого массива, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… функция Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true.

Array.prototype.find() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ искомоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² массивС, Ссли элСмСнт Π² массивС удовлСтворяСт ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ undefined, Ссли Ρ‚Π°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.

Array.prototype.findIndex() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ искомый индСкс Π² массивС, Ссли элСмСнт Π² массивС удовлСтворяСт ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ -1, Ссли Ρ‚Π°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.

Array.prototype.keys() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ массива, содСрТащий ΠΊΠ»ΡŽΡ‡ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ индСкса Π² массивС.

Array.prototype.map() Π‘ΠΎΠ·Π΄Π°Ρ‘Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ массив с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ Π²Ρ‹Π·ΠΎΠ²Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ элСмСнтС Π΄Π°Π½Π½ΠΎΠ³ΠΎ массива.

Array.prototype.reduce() ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΊ аккумулятору ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ массива (слСва-Π½Π°ΠΏΡ€Π°Π²ΠΎ), сводя Π΅Π³ΠΎ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ.

Array.prototype.reduceRight() ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΊ аккумулятору ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ массива (справа-Π½Π°Π»Π΅Π²ΠΎ), сводя Π΅Π³ΠΎ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ.

Array.prototype.values() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° массива Array Iterator, содСрТащий значСния для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ индСкса Π² массивС.

Array.prototype[@@iterator]() Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° массива Array Iterator, содСрТащий значСния для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ индСкса Π² массивС.

Помогла Π»ΠΈ Π²Π°ΠΌ ΡΡ‚Π°Ρ‚ΡŒΡ?

348 Ρ€Π°Π· ΡƒΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³Π»Π°

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ: (0)

.flatMap() β€” JavaScript β€” Π”ΠΎΠΊΠ°

ΠšΡ€Π°Ρ‚ΠΊΠΎ

Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΎ

ΠœΠ΅Ρ‚ΠΎΠ΄ flatMap() позволяСт ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив, примСняя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту, Π·Π°Ρ‚Π΅ΠΌ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ, дСлая этот массив плоским, ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ.

Π‘Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² стандартС ES2019. Если Π²Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹, Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ Ρ€Π°Π½ΡŒΡˆΠ΅ 2018 Π³ΠΎΠ΄Π°, Ρ‚ΠΎ Π²Π°ΠΌ понадобится ΠΏΠΎΠ»ΠΈΡ„ΠΈΠ».

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΎ

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ плоский список ΠΈΠ· слоТной структуры

Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΎ

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ список Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ Π·Π°ΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚:

const orders = [    {        id: 1,        products: [            { name: 'Π§ΠΈΠ·ΠΊΠ΅ΠΉΠΊ', price: 1.
99 }, { name: 'Бисквит', price: 4.99 }, ] }, { id: 2, products: [ { name: 'Π¨ΠΎΠΊΠΎΠ»Π°Π΄', price: 5.59 }, { name: 'Π—Π΅Ρ„ΠΈΡ€', price: 8.99 }, ] }] const orders = [ { id: 1, products: [ { name: 'Π§ΠΈΠ·ΠΊΠ΅ΠΉΠΊ', price: 1.99 }, { name: 'Бисквит', price: 4.99 }, ] }, { id: 2, products: [ { name: 'Π¨ΠΎΠΊΠΎΠ»Π°Π΄', price: 5.59 }, { name: 'Π—Π΅Ρ„ΠΈΡ€', price: 8.99 }, ] } ]

Одним ΠΈΠ· Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ сначала Π΄Π²Π°ΠΆΠ΄Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ map(), Π° Π·Π°Ρ‚Π΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ массив плоским с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° flat()

Π‘Π½Π°Ρ‡Π°Π»Π° Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ map():

orders.map(  (order) => order.products.map(product => product.name))
          
orders.map( (order) => order. products.map(product => product.name) )

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

[['Π§ΠΈΠ·ΠΊΠ΅ΠΉΠΊ', 'Бисквит'], ['Π¨ΠΎΠΊΠΎΠ»Π°Π΄', 'Π—Π΅Ρ„ΠΈΡ€']]
          [['Π§ΠΈΠ·ΠΊΠ΅ΠΉΠΊ', 'Бисквит'], ['Π¨ΠΎΠΊΠΎΠ»Π°Π΄', 'Π—Π΅Ρ„ΠΈΡ€']]

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ массивов, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ Π½Π΅Ρ‘ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ. Для этого ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ flat():

orders  .map((order) => order.products.map((product) => product.name))  .flat()
          orders
  .map((order) => order.products.map((product) => product.name))
  .flat()
['Π§ΠΈΠ·ΠΊΠ΅ΠΉΠΊ', 'Бисквит', 'Π¨ΠΎΠΊΠΎΠ»Π°Π΄', 'Π—Π΅Ρ„ΠΈΡ€']
          ['Π§ΠΈΠ·ΠΊΠ΅ΠΉΠΊ', 'Бисквит', 'Π¨ΠΎΠΊΠΎΠ»Π°Π΄', 'Π—Π΅Ρ„ΠΈΡ€']

Π”Ρ€ΡƒΠ³ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ этой Π·Π°Π΄Π°Ρ‡ΠΈ β€” сразу Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ flatMap

() (вСдь ΡΡ‚Π°Ρ‚ΡŒΡ Ρƒ нас ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΎ Π½Π΅Π³ΠΎ):

orders.flatMap(  (order) => order.products.map(product => product.name))
          orders.flatMap(
  (order) => order. products.map(product => product.name)
)

Π£Π²ΠΈΠ΄ΠΈΠΌ Ρ‡Ρ‚ΠΎ функция ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»Π°ΡΡŒ, Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ»Π°ΡΡŒ ΠΈ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ названия ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΈΠ· массива products:

['Π§ΠΈΠ·ΠΊΠ΅ΠΉΠΊ', 'Бисквит', 'Π¨ΠΎΠΊΠΎΠ»Π°Π΄', 'Π—Π΅Ρ„ΠΈΡ€']
          ['Π§ΠΈΠ·ΠΊΠ΅ΠΉΠΊ', 'Бисквит', 'Π¨ΠΎΠΊΠΎΠ»Π°Π΄', 'Π—Π΅Ρ„ΠΈΡ€']

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ структуры Π΄Π°Π½Π½Ρ‹Ρ…

Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΎ

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ пишСм ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ для ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°. Π’ΠΎΠ²Π°Ρ€Ρ‹ Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅ Ρ…Ρ€Π°Π½ΠΈΠΌ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:

const cart = [  {    name: 'Π’Π΅Π»Π΅Ρ„ΠΎΠ½',    count: 1,    price: 500,  },  {    name: 'Ноутбук',    count: 1,    price: 800,  }]
          const cart = [
  {
    name: 'Π’Π΅Π»Π΅Ρ„ΠΎΠ½',
    count: 1,
    price: 500,
  },
  {
    name: 'Ноутбук',
    count: 1,
    price: 800,
  }
]

Если Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΏΠΎΠΊΡƒΠΏΠ°Π΅Ρ‚ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½, Ρ‚ΠΎ трСбуСтся Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ зарядноС устройство. Для этого Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ flatMap() ΠΈ Π±ΡƒΠ΄Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ массив ΠΈΠ· Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π° ΠΈ зарядного устройства вмСсто ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠΌ.

cart.flatMap(  (item) => {    if (item.name === 'Π’Π΅Π»Π΅Ρ„ΠΎΠ½') {      return [item, {        name: 'ЗарядноС устройство',        count: item.count,        price: 50,      }]    }    return item  })
          cart.flatMap(
  (item) => {
    if (item.name === 'Π’Π΅Π»Π΅Ρ„ΠΎΠ½') {
      return [item, {
        name: 'ЗарядноС устройство',
        count: item.count,
        price: 50,
      }]
    }
    return item
  }
)

flatMap() сдСлаСт массив плоским ΠΈ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ массив элСмСнтов Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅:

[  {    name:'Π’Π΅Π»Π΅Ρ„ΠΎΠ½',    count:1,    price:500,  }, {    name:'ЗарядноС устройство',    count:1,    price:50,  }, {    name:'Ноутбук',    count:1,    price:800,  },]
          [
  {
    name:'Π’Π΅Π»Π΅Ρ„ΠΎΠ½',
    count:1,
    price:500,
  }, {
    name:'ЗарядноС устройство',
    count:1,
    price:50,
  }, {
    name:'Ноутбук',
    count:1,
    price:800,
  },
]

Π­Ρ‚Ρƒ ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ способом, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ reduce(). Но это отразится Π½Π° читаСмости ΠΊΠΎΠ΄Π°, Π° этим ΠΏΡ€Π΅Π½Π΅Π±Ρ€Π΅Π³Π°Ρ‚ΡŒ Π½Π΅ стоит!

cart.reduce((list, item) => {    if (item.name === 'Π’Π΅Π»Π΅Ρ„ΠΎΠ½') {      list.push(item, {        name: 'ЗарядноС устройство',        count: item.count,        price: 50,      })    } else {        list.push(item)    }    return list}, [])
          
cart.reduce((list, item) => { if (item.name === 'Π’Π΅Π»Π΅Ρ„ΠΎΠ½') { list.push(item, { name: 'ЗарядноС устройство', count: item.count, price: 50, }) } else { list.push(item) } return list }, [])

Как ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ

Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΎ

Как ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ, flatMap() Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ колбэк-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ИмСнно это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΏΠ°Π΄Ρ‘Ρ‚ Π² ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ массив.

Ѐункция, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ Π² flatMap(), ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚Ρ€ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:

  • currentValue β€” Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ элСмСнт массива.
  • index β€” индСкс Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ элСмСнта Π² массивС.
  • array β€” массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ элСмСнтов массива.

Как ΠΏΠΎΠ½ΡΡ‚ΡŒ

Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΎ

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π΅Π½ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ Π²Ρ‹Π·ΠΎΠ²Ρƒ map().flat() с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ depth = 1, соотвСтствСнно, примСняСтся для трансформации исходных Π΄Π°Π½Π½Ρ‹Ρ…, с ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ΠΌ влоТСнности.

Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ эффСктивный, Ρ‡Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ² этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ±Ρ…ΠΎΠ΄ массива ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ

map() ΠΈ flatMap()

Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΎ

Рассмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ map() ΠΈ flatMap(). Π’ΠΎΠ·ΡŒΠΌΡ‘ΠΌ массив с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎ мСстополоТСнии ΠΈ прСдставим, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ (ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ) ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹:

const allActivities = [  { title: 'ΠžΡ„ΠΈΡ', coordinates: [50.123, 3.291] },  { title: 'Π‘ΠΏΠΎΡ€Ρ‚Π·Π°Π»', coordinates: [1.238, 4.292] },]const mappedCoordinates = allActivities.map(activity => activity.coordinates)const flatMappedCoordinates = allActivities.flatMap(activity => activity.coordinates)
          const allActivities = [
  { title: 'ΠžΡ„ΠΈΡ', coordinates: [50.123, 3.291] },
  { title: 'Π‘ΠΏΠΎΡ€Ρ‚Π·Π°Π»', coordinates: [1.238, 4.292] },
]
const mappedCoordinates = allActivities.map(activity => activity.coordinates)
const flatMappedCoordinates = allActivities.flatMap(activity => activity.coordinates)

Π’Π΅ΠΏΠ΅Ρ€ΡŒ взглянСм Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ map():

[[50.123, 3.291], [1.238, 4.292]]
          [[50.123, 3.291], [1.238, 4.292]]

И Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ с flatMap():

[50. 123, 3.291, 1.238, 4.292]
          [50.123, 3.291, 1.238, 4.292]

ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ map() ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ массивы ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚, Π° Π·Π°Ρ‚Π΅ΠΌ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ массив, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сразу ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ flatMap().

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ flat() ΠΈ flatMap()

Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΎ

ΠœΠ΅Ρ‚ΠΎΠ΄ flat() Π΄Π΅Π»Π°Π΅Ρ‚ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ массив плоским, Π³Π»ΡƒΠ±ΠΈΠ½Π° указываСтся Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ….
ΠœΠ΅Ρ‚ΠΎΠ΄ flatMap() примСняСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, трансформируя массив ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ массив плоским. Π”Π²Π° Π² ΠΎΠ΄Π½ΠΎΠΌ.

Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массива Π² JavaScript

НСсколько способов ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массива Π² JavaScript: Ρ†ΠΈΠΊΠ» for, Ρ†ΠΈΠΊΠ» while, Ρ†ΠΈΠΊΠ» for-of, map(), forEach(), filter() ΠΈ reduce( ).

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

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

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ массив?

Π’Π°ΠΊ ΠΊΠ°ΠΊ массив Ρ…Ρ€Π°Π½ΠΈΡ‚ элСмСнты Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ порядкС, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ массив, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Π² Π½Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹ΠΉ элСмСнт. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ±Ρ…ΠΎΠ΄ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ врСмя слоТности O(n). ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ пройдСмся ΠΏΠΎ массиву, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ элСмСнты массива ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту массива.

Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±Ρ…ΠΎΠ΄Π° массива

БущСствуСт нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΠ±Ρ…ΠΎΠ΄Π° массива. Π˜Ρ…:

  1. Ρ†ΠΈΠΊΠ» for
  2. Ρ†ΠΈΠΊΠ» while
  3. Ρ†ΠΈΠΊΠ» for-of
  4. map()
  5. forEach()
  6. filter()
  7. reduce()
1 основной Ρ†ΠΈΠΊΠ» 0.0 for2209 0 ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массива. Π¦ΠΈΠΊΠ» for ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΎΠ±Ρ…ΠΎΠ΄Π° массива, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Π»ΠΈΠ½Ρƒ массива. Π’ Ρ†ΠΈΠΊΠ»Π΅ for слСдуСт ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ Ρ‚Ρ€ΠΈ условия.

  1. ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ условиС
  2. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ условиС
  3. УсловиС повторСния (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

2. Π¦ΠΈΠΊΠ» while

Π¦ΠΈΠΊΠ» while Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ†ΠΈΠΊΠ»Ρƒ for, Π½ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ условиС ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π΄Π°Π½Π½ΠΎΠ΅ условиС Π½Π΅ станСт истинным. Если условиС становится Π»ΠΎΠΆΠ½Ρ‹ΠΌ, Ρ†ΠΈΠΊΠ» while прСрываСтся, ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ Π²Π½Π΅ Ρ†ΠΈΠΊΠ»Π°. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ continue ΠΈ break ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° while.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

3. Π¦ΠΈΠΊΠ» for-of

Π¦ΠΈΠΊΠ» for-of ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ†ΠΈΠΊΠ» for-in Π² Python, Π³Π΄Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Β«inΒ» Π² качСствС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π² JS Β«inΒ» Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ Π½Π° Β« ΠΈΠ·». Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массива ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ элСмСнтам Π±Π΅Π· индСксации, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ Π΄Π°Π΅Ρ‚ элСмСнты, Π° Π½Π΅ индСксируСт, ΠΊΠ°ΠΊ фактичСский Β«Ρ†ΠΈΠΊΠ» forΒ».

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

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

4. map()

Map() β€” это ΠΌΠ΅Ρ‚ΠΎΠ΄ массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ примСнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ дСйствия ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту массива, ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ массив Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ ΠΊΠ°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Он Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, Π° функция ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, индСкс ΠΈ массив. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, Π±ΡƒΠ΄Π΅Ρ‚ сохранСн Π² массивС с Ρ‚Π΅ΠΌ ΠΆΠ΅ индСксом. ΠŸΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π±Π΅Ρ€Π΅Ρ‚Π΅ элСмСнты ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ массива, ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈΠΌΠΈ ΠΈ сохраняСтС ΠΈΡ… Π² Π½ΠΎΠ²ΠΎΠΌ массивС.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивом

5. forEach()

forEach() Ρ‚Π°ΠΊΠΆΠ΅ являСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ массива ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ map(), Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ СдинствСнноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ forEach() Π½Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ. Π­Ρ‚ΠΎ Π²Π΅Ρ€Π½Π΅Ρ‚ undefined. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° map(), Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ forEach(), Π½ΠΎ для измСнСния элСмСнта Π² Π½ΠΎΠ²ΠΎΠΌ массивС Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ усилия.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

6. filter()

ΠœΠ΅Ρ‚ΠΎΠ΄ filter() Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ map(), Π½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° β€” логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠœΠ΅Ρ‚ΠΎΠ΄ filter() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ массива Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с элСмСнтами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹, Π½Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ, Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ массив. Если Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· элСмСнтов Π½Π΅ удовлСтворяСт ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ пустым массивом, Π° Π½Π΅ Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… чисСл Π² массивС

7. reduce()

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ способ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ reduce() β€” ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Π΅Π΅ Π½Π° простом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Рассмотрим Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ добавлСния элСмСнтов Π² массив. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΡ‹ опрСдСляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠ°ΠΊ сумму Π΄ΠΎ 0, добавляСм всС элСмСнты Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ суммы ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π΅Π΅.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ, просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ reduce(), ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

Π€ΡƒΠ½ΠΊΡ†ΠΈΡŽ reduce() ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ способами для достиТСния Ρ€Π°Π·Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ, ΠΈ я Π½Π΅ смог ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ всС Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΡ‚Π°Ρ‚ΡŒΡ.

Check out my new portfolio:

Naveenkumar M

Web site created using create-react-app

mdnaveenkumar2002.web.app

More content at PlainEnglish.io . ΠŸΠΎΠ΄ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ Π½Π° Π½Π°ΡˆΡƒ Π±Π΅ΡΠΏΠ»Π°Ρ‚Π½ΡƒΡŽ Π΅ΠΆΠ΅Π½Π΅Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ рассылку . Π‘Π»Π΅Π΄ΡƒΠΉΡ‚Π΅ Π·Π° Π½Π°ΠΌΠΈ Π½Π° Twitter , LinkedIn , YouTube ΠΈ Дискорд .

11 способов ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ массива Π² Javascript

Ах… Javascript, наш Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ язык, Π•Π³ΠΎ свобода ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ благословСниСм, Ρ‚Π°ΠΊ ΠΈ проклятиСм.

Π’ этом постС ΠΌΡ‹ рассмотрим 11 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способов (Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΌ порядкС) ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массива (Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°) Π² Javascript.


Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ наш массив

Π₯ΠΎΡ€ΠΎΡˆΠΎ, это довольно простой массив, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ дальшС.

1- Π’Π΅Ρ€Π½Ρ‹ΠΉ старый forEach

Массив.ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ.длякаТдого

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ массив forEach ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:

1- Ѐункция, содСрТащая Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ элСмСнт, индСкс ΠΈ исходный массив.
2- A эта Π·Π°ΠΌΠ΅Π½Π° для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° (игнорируСтся стрСлочными функциями).

Π­Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ способ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, совмСстимый с IE9

2- Π¦ΠΈΠΊΠ» for-in

Π’Π°ΠΊΠΎΠ΅ использованиС Ρ†ΠΈΠΊΠ»Π° Π½Π΅ рСкомСндуСтся ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ с Π½ΠΈΠΌ Π² Π΄ΠΈΠΊΠΎΠΉ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π² производствС. Он ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ любоС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ свойство, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ свойств javascript ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Он Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для цикличСского ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массивов, Π½ΠΎ Ссли Π²Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Π² ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ΅ массива, Ρ‚ΠΎ ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½.

3 — Π¦ΠΈΠΊΠ» for-of (ES6)

Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых Ρ‰Π΅Π΄Ρ€Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² Ρ†ΠΈΠΊΠ»ΠΎΠ², ΠΎΠ½ встроСн Π² саму ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ языка. Он ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ†ΠΈΠΊΠ» for-in, Π½ΠΎ основноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ for-of ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для Ρ‚ΠΈΠΏΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ (ΠΊΠ°Ρ€Ρ‚Ρ‹, Π½Π°Π±ΠΎΡ€Ρ‹, массивы, массивы Ρ‚ΠΈΠΏΠΎΠ², списки ΡƒΠ·Π»ΠΎΠ² ΠΈ Ρ‚.Β Π΄.). Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ с Π»ΡŽΠ±Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ символ [Symbol.iterator] (см. Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ΅ использованиС).

ОсновноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Array.prototype.forEach Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово break для остановки Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово continue для пропуска Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

4 — Π‘Ρ‚ΠΈΠ»ΡŒ C для Ρ†ΠΈΠΊΠ»Π°

Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… массивов Π² Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ΅. Π•Π³ΠΎ синтаксис унаслСдован ΠΎΡ‚ языка C ΠΈ состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… частСй:

  • Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ индСкса
  • БостояниС Ρ€Π°Π±ΠΎΡ‚Ρ‹
  • ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ индСкса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСтся Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова break ΠΈ continue для Ρ†ΠΈΠΊΠ»ΠΎΠ² Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

5 — Π¦ΠΈΠΊΠ» «ΠŸΠΎΠΊΠ°»

Π¦ΠΈΠΊΠ» while самый быстрый (ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅), Π΅Π³ΠΎ синтаксис ΠΎΡ‡Π΅Π½ΡŒ прост:

  • УсловиС выполнСния

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

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова break ΠΈ continue для Ρ†ΠΈΠΊΠ»ΠΎΠ² Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

6. Π¦ΠΈΠΊΠ» Do-while

Π¦ΠΈΠΊΠ» do-while ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ†ΠΈΠΊΠ» while, Π½ΠΎ ΠΎΠ½ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚ условиС выполнСния Π² ΠΊΠΎΠ½Ρ†Π΅ выполнСния, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ» всСгда выполняСтся хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Π­Ρ‚ΠΎ заставляСт вас ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ сцСнарий пустого массива, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ доступ ΠΊ пустому массиву ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС. Π•Π³ΠΎ синтаксис Ρ‚ΠΎΠΆΠ΅ прост:

  • БостояниС Ρ€Π°Π±ΠΎΡ‚Ρ‹

О, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова break ΠΈ continue для Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Ρ†ΠΈΠΊΠ»Π°.

7 β€” ΠœΠ΅Ρ‚ΠΎΠ΄ Map

Array.prototype.map

Π’ ES5 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Ρ‚Ρ€ΠΈ основных ΠΌΠ΅Ρ‚ΠΎΠ΄Π° для ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ массива для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ массива. Одним ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² являСтся ΠΊΠ°Ρ€Ρ‚Π° .

Ѐункция ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:

1- Ѐункция, содСрТащая Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ элСмСнт, индСкс ΠΈ исходный массив.
2- A эта Π·Π°ΠΌΠ΅Π½Π° для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° (игнорируСтся стрСлочными функциями).

НС слСдуСт ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ исходный массив.

8 — ΠœΠ΅Ρ‚ΠΎΠ΄ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ

Array.prototype.filter

Ѐункция Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΡ†Π΅Π½ΠΊΠΈ логичСского выраТСния, Ссли возвращаСтся true, Ρ‚ΠΎ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ элСмСнт остаСтся Π² Π½ΠΎΠ²ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅, Ссли возвращаСтся false, Ρ‚ΠΎ элСмСнт Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ массив.

Как ΠΈ функция ΠΊΠ°Ρ€Ρ‚Ρ‹, функция Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:

1- Ѐункция, которая содСрТит Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ элСмСнт, индСкс ΠΈ исходный массив.
2- A эта Π·Π°ΠΌΠ΅Π½Π° для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° (игнорируСтся стрСлочными функциями).

НС слСдуСт ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ исходный массив.

9 — ΠœΠ΅Ρ‚ΠΎΠ΄ Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ

Array.prototype.reduce

Ѐункция reduce отслСТиваСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ элСмСнт, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ для Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π² Π½Π°Ρ‡Π°Π»Π΅, Π½ΠΎ Ρ‡Π΅ΠΌ большС Π²Ρ‹ смотритС Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ сокращСния, Ρ‚Π΅ΠΌ Π»Π΅Π³Ρ‡Π΅ Π²Π°ΠΌ становится ΠΏΠΎΠ½ΡΡ‚ΡŒ синтаксис.

ΠœΠ΅Ρ‚ΠΎΠ΄ сокращСния ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

1- Ѐункция, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ являСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ, Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ элСмСнт итСрируСтся Π² качСствС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ индСксом элСмСнта, ΠΈ послСдний ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт доступ ΠΊ исходному массиву.
2- ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

ΠœΠ΅Ρ‚ΠΎΠ΄ сокращСния ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для синтСза всСго массива Π² ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для вычислСния суммы.

10 β€” ΠœΠ΅Ρ‚ΠΎΠ΄ соСдинСния строки ΠΈ массива

Array.prototype.join

ΠœΠ΅Ρ‚ΠΎΠ΄ соСдинСния ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‰Π΅Π΅ с послСдним Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ Π½Π°ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ (reduce): ΠΎΠ½ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π²Ρ‹Π²ΠΎΠ΄ ΠΈΠ· массива, Ρ‚ΠΎΡ‡Π½Π΅Π΅, строки, ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с массивами Π½Π° основС строк.

Он ΠΈΠΌΠ΅Π΅Ρ‚ СдинствСнный Π²Π²ΠΎΠ΄: строка-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

11 — ES2018 для оТидания

Π­Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Π½ΠΎΠ²Π΅ΠΉΡˆΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, прСдставлСнных Π² javascript, ΠΎΠ½Π° позволяСт Π½Π°ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π² Π½Π°ΡˆΠΈΡ… Ρ†ΠΈΠΊΠ»Π°Ρ… for of, позволяя ΠΈΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ обСщаниям ΠΈ асинхронным значСниям (см. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ асинхронного Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°).

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для оТидания вмСстС с функциями асинхронного Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΆΠ΄Π°Ρ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ промиса, ΠΈΠ»ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для оТидания массива промисов (вСроятно, Π²Π°ΠΌ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Promise .all для этого, хотя).

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


ES2019

Flat ΠΌΠ΅Ρ‚ΠΎΠ΄ Array.prototype.flat

Он ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ основной массив для поиска Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… массивов ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ значСния, содСрТащиСся Π² любом Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ массивС, Π½Π° Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, насколько Π³Π»ΡƒΠ±ΠΎΠΊΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ³Π»ΡƒΠ±ΠΈΡ‚ΡŒΡΡ Π² структуру массива, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вывСсти значСния массива Π½Π° Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ.

ES2019

Flatmap ΠΌΠ΅Ρ‚ΠΎΠ΄ Array.prototype.flatMap

Π­Ρ‚ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΊΠ°Ρ€Ρ‚Π° , Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ слСдуСт ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Π° . Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ³Π»Π°Π΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚Ρ‹, которая создаСт Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ массивы.

(Бпасибо Пабло Обандо Π·Π° эти прСдлоТСния) πŸ˜„

РСкурсия

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° массива, спасибо !

РСкурсия с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния β€” это ΠΊΠΎΠ³Π΄Π° функция ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ сама сСбя, проходя Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ΄. Π£ этого Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСимущСства:

1- Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ свою ΠΏΠ΅Ρ‚Π»ΡŽ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅.
2- Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄.
3- Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Π΄Π΅Π»ΠΎ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ структур, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Π΄Π΅Ρ€Π΅Π²ΡŒΡ ΠΈΠ»ΠΈ ΠΊΡ€ΡƒΠ³ΠΎΠ²Ρ‹Π΅ списки.

Но Π±ΡƒΠ΄ΡŒΡ‚Π΅ остороТны , javascript ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹Π·ΠΎΠ² рСгистрируСтся Π² стСкС Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², ΠΈ Ссли Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² слишком ΠΌΠ½ΠΎΠ³ΠΎ, Ρ‚ΠΎ Π²Ρ‹ пСрСполняСтС стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², вызывая ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊΠΆΠ΅ рСкурсивныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΠΈΠ·-Π·Π° этого повСдСния.

Π’Ρ‹ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ смСсь Ρ†ΠΈΠΊΠ»Π° C Style ΠΈ Ρ†ΠΈΠΊΠ»Π° forEach!

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для воспроизвСдСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Array.

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

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *