Jak používat metodu rozdělení v JavaScriptu

Tento příspěvek byl původně publikován na webinuse.com
Již jsme psali o síle metody JavaScript slice, která je často zaměňována s rozdělením JavaScriptu (.split() ) metoda. .split() metoda rozdělí řetězec podle určitých kritérií a vrátí pole prvků.

Začněme od začátku. Máme řetězec, který chceme rozdělit/rozdělit podle určitých kritérií. .split() metoda přijímá dva parametry:1. separátor a 2. limit. Máme například program, který potřebuje spočítat počet slov ve větě pomocí JavaScriptu.

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

Rozeberme si náš příklad. Nějakou větu uložíme do proměnné. Mohlo by to být odkudkoli. Potom jsme použili .split() metoda na proměnné, kde byla naše věta uložena. Po .split() bylo úspěšně ukončeno, vrátilo pole prvků a pole .length byl 11 . To znamená, že jsme měli ve větě 11 slov.

Oddělovač

Jak jsme již zmínili, JavaScript .split() přijímá dva parametry. První je oddělovač. Oddělovač je vlastně kritérium, podle kterého je náš řetězec rozdělován.

Oddělovačem může být řetězec nebo regulární výraz. Pojďme diskutovat o různých případech oddělovače.

  1. Nejjednodušší případ je, když je oddělovačem jeden znak. Tímto jediným znakem může být cokoliv:písmeno, číslo, pomlčka, čárka, znak dolaru atd.
  2. Pokud oddělovač obsahuje více znaků. V takovém případě musí být přesná shoda těchto znaků nalezena ve stejném pořadí v řetězci s oddělovači.
  3. Pokud použijeme prázdný oddělovač nebo oddělovač, který není v řetězci, pak se celý řetězec vrátí jako jeden prvek pole.
  4. Podle MDN platí, že pokud se na začátku (nebo konci) řetězce objeví oddělovač, stále to má účinek rozdělení. Výsledkem je prázdný řetězec (tj. nulové délky), který se objeví na první (nebo poslední) pozici vráceného pole.
  5. Pokud použijeme prázdný oddělovač řetězců, řetězec se převede na pole každého z jeho „znaků“ UTF-16.

Nyní uvedeme příklad pro každý z těchto bodů.


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

Parametr limit představuje maximální počet položek, které chceme vrátit. V metodě JavaScript .split() existují určitá pravidla týkající se parametru limit.

  1. Parametr limitu musí být kladné celé číslo
  2. Pokud je limit roven nule, vrátí se prázdné pole
  3. Pokud je v poli více položek, než je skutečný limit, než .split() vrátí pouze do limitu. Metoda JavaScript .split() nezahrnuje žádná zbývající data
  4. Když pole obsahuje méně dat, než je skutečný limit, vrátí se všechna data
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 jako oddělovač

Každý vývojář nesnáší RegEx. A nikdy jsem se nesetkal s žádným vývojářem, který by mohl s RegExem cokoliv dělat bez konzultace s dokumentací nebo nějakým jiným pomocníkem. Ale nemůžeme popřít, že RegEx je super užitečný.

Použití RegEx jako našeho oddělovače nám může pomoci rozdělit řetězec podle některých docela skvělých kritérií. Představme si, že chceme rozdělit řetězec číslem. Toto číslo není vždy stejné. Tehdy můžeme použít RegEx.

let myString = 'Hello 1 word. Sentence number 2.'
let splits = myString.split(/(\d)/)

console.log(splits)
//Result:
// [ "Hello ", "1", " word. Sentence number ", "2", "." ]

Metoda rozdělení JavaScriptu je jednou z nejužitečnějších metod při práci s řetězci. Jedna ze super skvělých věcí je, že metoda .split() se snadno používá, a druhá je, že můžeme použít RegEx k rozdělení řetězce, nejen znaků.

Pokud máte nějaké dotazy nebo cokoli jiného, ​​můžete mě najít na mém Twitteru nebo si můžete přečíst některé z mých dalších článků, jako je Síla metody JavaScript slice.