Способи перетворення рядка у масив

Публікації

Розглянемо які є способи перетворення тексту у масив в JavaScript.

String.split()

У JavaScript є стандартний метод для розбиття рядка на масив split(). В якому в якості параметра можна вказати роздільник.

Приклад розділення кожного символу рядка на елемент масиву:

var text="JavaScript"; var arr=text.split(''); alert(arr);

Вказуємо роздільник символ "a":

var text="JavaScript"; var arr=text.split('a'); alert(arr);

...

Розділяємо рядок на масив за допомогою оператора розширення ....

var text="JavaScript"; var arr=[...text]; alert(arr);

Object.assign()

За допомогою метода Object.assign() який буде копіювати значення рядка у масив.

var text='JavaScript'; var arr=Object.assign([],text); alert(arr);

Array.from()

Метод Array.from() створює новий масив з масивоподібного об'єкта, що дозволить перетворити рядок у масив.

var text="JavaScript"; var arr=Array.from(text); alert(arr);

slice()

Не стандартно викликаний метод slice() дозволяє перетворити рядок у масив.

Нестандартність полягає в тому що ми за допомогою метода call() викликаємо метод slice() з заданим this - рядок.

var text="JavaScript"; var arr=[].slice.call(text); alert(arr);

Цикл

Рядок можна розбити на масив за допомогою циклу.

Щоб розбити текст на масив де кожен символ буде елементом масиву необхідно "пройтися" циклом по рядку і кожен символ додати до масиву за допомогою Array.push().

var text="JavaScript"; var arr=[]; for(var i=0;i<text.length;i++) arr.push(text[i]); alert(arr);

Якщо необхідно текст перетворити на масив використовуючи роздільник (як у методі String.split())тоді потрібно шукати роздільник у рядку за допомогою indexOf() і додавати необхідну частину тексту до масиву.

var text="JavaScript"; var arr=[]; var r='a', pos=0, p=0; do{ p=text.indexOf(r,p); if(p>-1){ arr.push(text.substring(pos,p)); pos=p=p+r.length; }else{ if(pos>0)arr.push(text.substr(pos)); else arr.push(text); } }while(p>-1); alert(arr);

Об'єднаємо два вище описаних цикла у повноціну функцію.

function StringToArray(text,r){ text=text.toString(); r=r||''; var res=[]; if(text=='') return res; if(r==''){ for(var i=0;i<text.length;i++) res.push(text[i]); return res; } var pos=0, p=0; do{ p=text.indexOf(r,p); if(p>-1){ res.push(text.substring(pos,p)); pos=p=p+r.length; }else{ if(pos>0)res.push(text.substr(pos)); else res.push(text); } }while(p>-1); return res; } var mas=StringToArray('JavaScript', 'a'); alert(mas);
2022-09-25 16:56:35

Тільки зареєстровані користувачі можуть писати коментарі.