Это сообщение изначально было опубликовано на webinuse.com

Мы уже писали о силе метода слайсов JavaScript, который часто путают с методом разделения JavaScript (.split()). Метод .split() разбивает строку по определенным критериям и возвращает массив элементов.

Начнем с самого начала. У нас есть строка, которую мы хотим разбить/разделить по определенным критериям. Метод .split() принимает два параметра: 1. разделитель и 2. лимит. Например, у нас есть программа, которой нужно подсчитать количество слов в предложении, используя JavaScript.

let sentence = "We want to count the number of words in this sentence";
console.log(sentence);
//Result: 
//We want to count the number of words in this sentence
let numberOfWords = sentence.split(" ");
console.log(numberOfWords)
//Result: 
/* (11) ['We', 'want', 'to', 'count', 'the', 'number', 
        'of', 'words', 'in', 'this', 'sentence']
*/
console.log(numberOfWords.length);
//Result: 
// 11

Разберем наш пример. Мы храним некоторое предложение в переменной. Если на то пошло, это может быть откуда угодно. Затем мы использовали .split()method для переменной, в которой хранилось наше предложение. После успешного завершения .split() он вернул массив элементов, а массив .length был 11. Это означает, что в нашем предложении было 11 слов.

Разделитель

Как мы упоминали ранее, JavaScript .split() принимает два параметра. Первый — разделитель. Разделитель на самом деле является критерием, по которому наша строка разбивается.

Разделителем может быть строка или регулярное выражение. Давайте обсудим различные случаи разделителя.

  1. Самый простой случай, когда разделителем является одиночный символ. Этот единственный символ может быть любым: буква, цифра, тире, запятая, знак доллара и т. д.
  2. Когда разделитель содержит несколько символов. В этом случае точное совпадение для этих символов должно быть найдено в том же порядке в строке с разделителями.
  3. Если мы используем пустой разделитель или разделитель, которого нет в строке, то вся строка возвращается как один элемент массива.
  4. Согласно MDN, если разделитель стоит в начале (или в конце) строки, он все равно имеет эффект разделения. Результатом является пустая (т.е. нулевая) строка, которая появляется в первой (или последней) позиции возвращаемого массива.
  5. Если мы используем пустой разделитель строк, то строка преобразуется в массив каждого из ее «символов» UTF-16.

Теперь мы собираемся привести пример для каждого из этих пунктов.

let sentence = "_We want to count the number of words in this sentence";
//1. Case with single character
console.log(sentence.split(' '));
//Result:
//(11)['_We', 'want', 'to', 'count', 'the', 'number', 'of', 'words', 'in', 'this', 'sentence']
//2. Case with a string
console.log(sentence.split('to'));
//Result: 
//(2)['_We want ', ' count the number of words in this sentence']
//3. Case without spearator
console.log(sentence.split());
//Result: 
//['_We want to count the number of words in this sentence']
//4. Case on the beggining or the end
console.log(sentence.split('_'));
//Result:
//(2)['', 'We want to count the number of words in this sentence']
//5. Empty string separator
console.log(sentence.split(''));
//Result: 
//(54)['_', 'W', 'e', ' ', 'w', 'a', 'n', 't', ' ', 't', 'o', ' ', ...]

Ограничение

Параметр limit представляет максимальное количество элементов, которые мы хотим вернуть. Существуют некоторые правила, касающиеся параметра limit в методе JavaScript .split().

  1. Параметр limit должен быть положительным целым числом.
  2. Если предел равен нулю, возвращается пустой массив
  3. Если в массиве больше элементов, чем фактический предел, то .split() возвращает только до предела. Метод JavaScript .split() не содержит остаточных данных.
  4. Когда массив содержит меньше данных, чем фактический лимит, возвращаются все данные
let str = "Split this string";
//1. Case Limit must be positive integer
console.log(str.split(' ', 3));
//Result:
//(3) ['Split', 'this', 'string']
//2. Case If limit is equal 0
console.log(str.split(' ', 0));
//Result:
//[]
//3. Case More items than limit
console.log(str.split(' ', 1));
//Result:
//['Split']
//4. Case when array contains less than the limit
console.log(str.split(' ', 9));
//Result:
//(3) ['Split', 'this', 'string']

RegEx как разделитель

Каждый разработчик ненавидит RegEx. И я никогда не встречал разработчика, который мог бы делать что-либо с RegEx, не обращаясь к документации или какому-либо другому помощнику. Но мы не можем отрицать, что RegEx очень полезен.

Использование RegEx в качестве разделителя может помочь нам разделить строку по некоторым довольно интересным критериям. Давайте представим, что мы хотим разделить строку на число. Это число не всегда одинаково. Вот когда мы можем использовать RegEx.

let myString = 'Hello 1 word. Sentence number 2.'
let splits = myString.split(/(\d)/)
console.log(splits)
//Result:
// [ "Hello ", "1", " word. Sentence number ", "2", "." ]

Метод разделения JavaScript — один из самых полезных методов при работе со строками. Одна из самых крутых вещей заключается в том, что метод .split() прост в использовании, а во-вторых, мы можем использовать RegEx для разделения строки, а не только символов.

Если у вас есть какие-либо вопросы или что-то еще, вы можете найти меня в моем Твиттере, или вы можете прочитать некоторые из моих других статей, таких как Сила метода срезов JavaScript.