{"componentChunkName":"component---src-templates-post-js","path":"/javascript/razbiraemsya-s-putanitsei-mezhdu-metodami-javascript-slice-splice-i-split/","result":{"pageContext":{"slug":"razbiraemsya-s-putanitsei-mezhdu-metodami-javascript-slice-splice-i-split","content":"\n<p>Очень полезная статья про то, как работают методы&nbsp;<code>slice()</code>,&nbsp;<code>splice()</code>&nbsp;и&nbsp;<code>split()</code>. В реальном мире даже опытные разработчики делают в них ошибки.</p>\n\n\n\n<p class=\"author\" id=\"2192\"><em>Перевод статьи&nbsp;</em><a rel=\"noreferrer noopener\" target=\"_blank\" href=\"https://medium.com/free-code-camp/lets-clear-up-the-confusion-around-the-slice-splice-split-methods-in-javascript-8ba3266c29ae\"><em>Let’s clear up the confusion around the slice( ), splice( ), &amp; split( ) methods in JavaScript</em></a></p>\n\n\n\n<p id=\"0d7d\">Встроенные в JavaScript методы действительно сильно помогают в процессе разработки, особенно если мы понимаем принцип их работы должным образом. Я бы хотел объяснить функционал трёх из них: это&nbsp;<code>splice()</code>,&nbsp;<code>slice()</code>&nbsp;и&nbsp;<code>split()</code>. Возможно потому, что их имена очень похожи — их зачастую путают даже опытные разработчики.</p>\n\n\n\n<p id=\"af1d\">Я настоятельно рекомендую студентам и джуниорам читать эту статью внимательно, потому что эти три метода могут быть включены в процесс собеседования.</p>\n\n\n\n<p id=\"192e\">Вы найдете обобщенные описания методов в конце статьи. Ну а теперь давайте начнем.</p>\n\n\n\n<h2 id=\"b556\"><strong>JavaScript массивы</strong></h2>\n\n\n\n<p id=\"c52c\">Во первых, вам необходимо понять как работают массивы в JavaScript. Как и в других языках программирования, мы используем массивы для хранения разнообразных данных в JS.</p>\n\n\n\n<p id=\"3c5f\">Иногда нам нужно выполнять какие-либо операции на этих массивах. И тогда мы прибегаем к JavaScript методам, например к&nbsp;<code>slice()</code>&nbsp;или&nbsp;<code>splice()</code>. Ниже вы видите, как объявлять массив в JavaScript:</p>\n\n\n\n<pre class=\"wp-block-code javascript\"><code>let arrayDefinition = &#91;]; // Объявление массива</code></pre>\n\n\n\n<p>А теперь давайте объявим ещё один массив с разными типами данных. Ниже, в своих&nbsp;примерах, я буду использовать именно его :</p>\n\n\n\n<pre class=\"wp-block-code javascript\"><code>let array = &#91;1, 2, 3, \"hello world\", 4.12, true];</code></pre>\n\n\n\n<p>Такое возможно в JavaScript. Массив с разными типами данных: строка, число и булево значение.</p>\n\n\n\n<h2 id=\"76bb\"><strong>slice()</strong></h2>\n\n\n\n<p id=\"af2b\">Метод&nbsp;<code>slice()</code>&nbsp;копирует заданную часть массива и возвращает её в виде совершенно нового массива. Этот метод вообще не трогает оригинальный массив:</p>\n\n\n\n<pre class=\"wp-block-code javascript\"><code>array.slice(from, until);</code></pre>\n\n\n\n<p id=\"264f\"><strong>From</strong>: с индекса какого элемента начинается нарезка массива</p>\n\n\n\n<p id=\"ead9\"><strong>Until</strong>: до какого элемента массива нарезается массив</p>\n\n\n\n<p id=\"0248\">Для примера, нам нужно нарезать первые три элемента из вышеуказанного массива. Так как первый элемент в массиве всегда имеет индекс 0, то начнём мы нарезку именно с него.</p>\n\n\n\n<pre class=\"wp-block-code javascript\"><code>array.slice(0, until);</code></pre>\n\n\n\n<p>А теперь хитрый момент. Когда мне надо нарезать первые три элемента, мне надо задать параметр&nbsp;<code>until = 3</code>. Почему? Потому что&nbsp;<code>slice()</code>&nbsp;не затрагивает последний заданный элемент.</p>\n\n\n\n<pre class=\"wp-block-preformatted\"></pre>\n\n\n\n<pre class=\"wp-block-code javascript\"><code>array&#91;0] --> 1              // включён\narray&#91;1] --> 2              // включён\narray&#91;2] --> 3              // включён\narray&#91;3] --> \"hello world\"  // уже не включён\n</code></pre>\n\n\n\n<p>Это может создать некое недопонимание. Именно по этому я назвал второй параметр&nbsp;<code>until</code>&nbsp;(до).</p>\n\n\n\n<pre class=\"wp-block-code javascript\"><code>let newArray = array.slice(0, 3); // Отдаётся также массив</code></pre>\n\n\n\n<p>И наконец, я назначаю нарезанный массив на переменную&nbsp;<code>newArray</code>. Давайте посмотрим, что получается:</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"466\" height=\"103\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_ppPGRgqMpZHQzB3P8oDCog.png\" alt=\"\" class=\"wp-image-158\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_ppPGRgqMpZHQzB3P8oDCog.png 466w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_ppPGRgqMpZHQzB3P8oDCog-300x66.png 300w\" sizes=\"(max-width: 466px) 100vw, 466px\" /></figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"506\" height=\"75\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_bsh2j7UulR4s3I2WNSFt5A.png\" alt=\"\" class=\"wp-image-159\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_bsh2j7UulR4s3I2WNSFt5A.png 506w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_bsh2j7UulR4s3I2WNSFt5A-300x44.png 300w\" sizes=\"(max-width: 506px) 100vw, 506px\" /></figure>\n\n\n\n<p><strong>Важное замечание:</strong>&nbsp;метод&nbsp;<code>slice()</code>&nbsp;также можно использовать и на строках.</p>\n\n\n\n<h2 id=\"54ea\"><strong>splice()</strong></h2>\n\n\n\n<p id=\"4a1a\">Название этой функции очень похоже на&nbsp;<code>slice()</code>. Такая схожесть зачастую сбивает разработчиков с толку. Метод&nbsp;<code>splice()</code>&nbsp;изменяет массив, добавляя или удаляя элементы в нем. Давайте посмотрим, как мы можем удалить элементы с помощью&nbsp;<code>splice()</code>:</p>\n\n\n\n<h3 id=\"71ed\">Удаление элементов</h3>\n\n\n\n<p id=\"b7a0\">Для их удаления нам надо задать параметр&nbsp;<code>index</code>&nbsp;и число элементов, которые будут удалены:</p>\n\n\n\n<pre class=\"wp-block-code javascript\"><code>array.splice(index, number of elements);</code></pre>\n\n\n\n<p>Тут&nbsp;<code>index</code>&nbsp;— это начальная точка для удаления элементов. Элементы, которые имеют индекс ниже заданного не будут удалены:</p>\n\n\n\n<pre class=\"wp-block-code javascript\"><code>array.splice(2); // Каждый элемент, начиная с 3го будет удалён</code></pre>\n\n\n\n<p>Если мы не указываем второй параметр, то будут удалены все элементы, начиная с заданного значения&nbsp;<code>index</code>.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"398\" height=\"102\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_VB2SB-PcqfpOc6NCprj3DA.png\" alt=\"\" class=\"wp-image-160\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_VB2SB-PcqfpOc6NCprj3DA.png 398w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_VB2SB-PcqfpOc6NCprj3DA-300x77.png 300w\" sizes=\"(max-width: 398px) 100vw, 398px\" /></figure>\n\n\n\n<p>Во втором примере я задам вторым параметром число&nbsp;<code>1</code>, что говорит о том, что элементы в массиве, начиная с числа&nbsp;<code>index</code>&nbsp;будут удалены по одному, при каждом вызове метода&nbsp;<code>splice()</code>:</p>\n\n\n\n<pre class=\"wp-block-code javascript\"><code>array.splice(2, 1);</code></pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"412\" height=\"27\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_eGMPlB-7wsZ8AZOYTm4GoQ.png\" alt=\"\" class=\"wp-image-161\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_eGMPlB-7wsZ8AZOYTm4GoQ.png 412w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_eGMPlB-7wsZ8AZOYTm4GoQ-300x20.png 300w\" sizes=\"(max-width: 412px) 100vw, 412px\" /></figure>\n\n\n\n<p><strong>После 1-го вызова:</strong></p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"362\" height=\"43\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_kVAntaGUhGgYQxvTss280g.png\" alt=\"\" class=\"wp-image-162\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_kVAntaGUhGgYQxvTss280g.png 362w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_kVAntaGUhGgYQxvTss280g-300x36.png 300w\" sizes=\"(max-width: 362px) 100vw, 362px\" /></figure>\n\n\n\n<p><strong>После 2-го вызова:</strong></p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"336\" height=\"57\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_jXkzRgcIpRsWdDQUzeIVkw.png\" alt=\"\" class=\"wp-image-163\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_jXkzRgcIpRsWdDQUzeIVkw.png 336w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_jXkzRgcIpRsWdDQUzeIVkw-300x51.png 300w\" sizes=\"(max-width: 336px) 100vw, 336px\" /></figure>\n\n\n\n<p id=\"d587\">В общем, это будет продолжаться пока вообще не останется элементов под индексом 2.</p>\n\n\n\n<h3 id=\"7b88\">Добавление элементов</h3>\n\n\n\n<p id=\"c153\">Для добавления элементов нам нужно указать 3, 4 и 5й параметры (в зависимости от того, сколько мы хотим добавить) методу&nbsp;<code>splice()</code>:</p>\n\n\n\n<pre class=\"wp-block-code javascript\"><code>array.splice(index, number of elements, element, element);</code></pre>\n\n\n\n<p>Как пример, я добавляю&nbsp;<code>a</code>&nbsp;и&nbsp;<code>b</code>&nbsp;в самое начала массива, при этом ничего не удаляя:</p>\n\n\n\n<pre class=\"wp-block-code javascript\"><code>array.splice(0, 0, 'a', 'b');</code></pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"474\" height=\"100\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_ehL_z84tfMd-HLNDUN2KUw.png\" alt=\"\" class=\"wp-image-164\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_ehL_z84tfMd-HLNDUN2KUw.png 474w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_ehL_z84tfMd-HLNDUN2KUw-300x63.png 300w\" sizes=\"(max-width: 474px) 100vw, 474px\" /></figure>\n\n\n\n<h2 id=\"2636\">split()</h2>\n\n\n\n<p id=\"695d\">Методы&nbsp;<code>slice()</code>&nbsp;и&nbsp;<code>splice()</code>&nbsp;для массивов. А вот метод&nbsp;<code>split()</code>&nbsp;используется для строк. Он делит строку на подстроки и отдаёт их в виде массива. Ему нужны 2 параметра и оба они опциональны.</p>\n\n\n\n<pre class=\"wp-block-code javascript\"><code>string.split(separator, limit);</code></pre>\n\n\n\n<p id=\"7d85\"><strong>Separator</strong>: определяет как разделять строку. Запятой, символом или тп.</p>\n\n\n\n<p id=\"5f22\"><strong>Limits</strong>: ограничивает количество разделений, опираясь на заданное число.</p>\n\n\n\n<p id=\"0d4f\">Этот метод не работает с массивами напрямую. Но однако, мы сначала можем конвертировать элементы массива в строку, а потом уже использовать метод&nbsp;<code>split()</code>.</p>\n\n\n\n<p id=\"b004\">Давайте посмотрим как это работает.</p>\n\n\n\n<p id=\"531b\">Сначала мы конвертируем наш массив в строку при помощи метода&nbsp;<code>toString()</code>:</p>\n\n\n\n<pre class=\"wp-block-code\"><code>let myString = array.toString();</code></pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"303\" height=\"97\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_2IsKWAZB6HV27l8ZvINePA.png\" alt=\"\" class=\"wp-image-165\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_2IsKWAZB6HV27l8ZvINePA.png 303w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_2IsKWAZB6HV27l8ZvINePA-300x96.png 300w\" sizes=\"(max-width: 303px) 100vw, 303px\" /></figure>\n\n\n\n<p>Теперь давайте разделим&nbsp;<code>myString</code>&nbsp;по запятым, ограничив его до 3 подстрок и возвратим его, как массив:</p>\n\n\n\n<pre class=\"wp-block-code javascript\"><code>let newArray = myString.split(\",\", 3);\n</code></pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"274\" height=\"58\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_vaN5R2yodR0o7fpfpw3TMg.png\" alt=\"\" class=\"wp-image-166\"/></figure>\n\n\n\n<p id=\"c1a3\">Как мы видим,&nbsp;<code>myString</code>&nbsp;разделен запятыми. А так как мы ограничиваем разбитие строки до 3-х элементов в массиве, то только первые 3 из них будут возвращены.</p>\n\n\n\n<p id=\"745e\">Обратите внимание, что если бы мы использовали&nbsp;<code>array.split(\"\")</code>, то каждый символ в строке был бы разделен на подстроки:</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"463\" height=\"82\" src=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_ddeJQxxJ3XUFR5Fp4pudhg-1.png\" alt=\"\" class=\"wp-image-167\" srcset=\"https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_ddeJQxxJ3XUFR5Fp4pudhg-1.png 463w, https://stasonmars.ru/wp/wp-content/uploads/2021/01/1_ddeJQxxJ3XUFR5Fp4pudhg-1-300x53.png 300w\" sizes=\"(max-width: 463px) 100vw, 463px\" /></figure>\n\n\n\n<h2 id=\"90de\"><strong>Подводим итоги</strong></h2>\n\n\n\n<h3 id=\"649a\"><strong>Slice()</strong></h3>\n\n\n\n<ul><li>Копирует элементы из массива</li><li>Отдаёт их как новый массив</li><li>Не трогает изначальный массив</li><li>Начинает нарезку с … до заданного индекса:&nbsp;<code>array.slice (from, until)</code></li><li>Последний параметр не нарезается методом&nbsp;<code>Slice()</code></li><li>Может использоваться как и для массивов, так и для строк</li></ul>\n\n\n\n<h3 id=\"200f\"><strong>Splice()</strong></h3>\n\n\n\n<ul><li>Используется для добавления/удаления элементов из массива</li><li>Отдаёт массив удаленных элементов</li><li>Изменяет массив</li><li>Для добавления элементов используйте:&nbsp;<code>array.splice (index, number of elements, element)</code></li><li>Для удаления элементов:&nbsp;<code>array.splice (index, number of elements)</code></li><li>Может использоваться только для массивов</li></ul>\n\n\n\n<h3 id=\"5e8e\"><strong>Split()</strong></h3>\n\n\n\n<ul><li>Разделяет строку на подстроки</li><li>Отдаёт их в массив</li><li>Берёт 2 параметра, оба опциональны:&nbsp;<code>string.split(separator, limit)</code></li><li>Не изменяет изначальную строку</li><li>Может использоваться только для строк</li></ul>\n\n\n\n<p id=\"f7c6\">Конечно же есть и другие встроенные JavaScript методы для работы с массивами и строками. Если вы поймете как их использовать, то они значительно упростят ваш процесс разработки.</p>\n","type":"js","date":"2021-01-27T21:14:20.000Z","acf":{"seo_desc":"Очень полезная статья про то, как работают методы slice(), splice() и split(). В реальном мире даже опытные разработчики делают в них ошибки.","keywords":"slice(), splice() и split() в javascript, как работают slice(), splice() и split() javascript, js slice(), splice() split()","pub_date":"2019-07-30","tags":"JavaScript, Функции"},"title":"Разбираемся с путаницей между JavaScript методами slice(), splice() и split()","id":"d3649fe4-c4f6-5d60-8269-f291cca2e0e9","excerpt":"<p>Очень полезная статья про то, как работают методы slice(), splice() и split(). В реальном мире даже опытные разработчики делают в них ошибки.</p>\n","featured_media":{"source_url":"https://stasonmars.ru/wp/wp-content/uploads/2021/01/splitsplicekfjdsn.jpg"},"interesting":[{"title":"Самые необходимые строковые и числовые методы в JavaScript","slug":"samie-neobhodimie-strokovie-i-chislovie-metody-v-javascript","type":"js"},{"title":"Понимаем каррирование в JavaScript","slug":"ponimaem-carrirovanie-v-javascript","type":"js"},{"title":"Разбираемся с путаницей между JavaScript методами slice(), splice() и split()","slug":"razbiraemsya-s-putanitsei-mezhdu-metodami-javascript-slice-splice-i-split","type":"js"}]}},"staticQueryHashes":["3576131997","63159454"]}