Cảm ơn bạn!
Một số cách để chuyển chuỗi thành mảng các ký tự trong JavaScript
Đề bài
Trong một số trường hợp chúng ta phải chuyển từ một string sang mảng các ký tự trong string đó vậy chúng ta sẽ xử lí nó thế nào ? Mình sẽ đưa ra một số cách mình hay áp dụng để giải quyết vấn đề này nhé 😅😁.
Giả sử mình có một string sau:
let str = "hi, i'm a web developer";
Chúng ta sẽ thực hiện chuyển string này thành mảng các ký tự nhé. Bắt đầu thôi nào 🙌
Split
Cách đầu tiên mình sẽ sử dụng method split.
Method split chia các chuỗi con trong chuỗi và đưa vào mảng. method này sẽ return về một mảng. Trong bài viết này mình sẽ không đi sâu vào lý thuyết mà sẽ để các bạn tìm hiểu về method nhé. Đây là cách mình làm:
let charArr = str.split("");
console.log(charArr); // ["h", "i", ",", " ", "i", "'", "m",...]
Mình chuyền một chuỗi rỗng ("") và kết quả sẽ trả về đúng như mong đợi.
Theo MDN docs.:
If separator is an empty string (""), str is converted to an array of each of its UTF-16 "characters"
For loop
Cách này mình nghĩ nhiều bạn thường hay áp dụng ^^. Tạo một mảng empty và sau đó push các ký tự trong vòng lặp for vào trong mảng này.
let charArr = [];
for (let i = 0; i < str.length; i++) {
charArr.push(str[i]);
}
hoặc nếu nhìn chán nhưng vẫn muốn sử dụng cách này ta sử dụng charAt:
for (let i = 0; i < str.length; i++) {
charArr.push(str.charAt(i));
}
Còn một cách sử dụng for nữa chúng ta cùng theo dõi nhé.
For...of
Đối với For...of, tương tự như vòng for ở trên ta tạo một array empty và mình đặt char (có thể đặt tên bất kì) ở vòng lặp này sẽ tương ứng với các ký tự trong string.
let charArr = [];
for (let char of str) {
charArr.push(char);
}
console.log(charArr); // ["h", "i", ",", " ", "i", "'", "m",...]
Array.from
Method Array.from này cách sử dụng rất đơn giản ta chỉ cần làm như sau:
let charArr = Array.from(str);
Ta được kết quả tương tự như trên.
Cần lưu ý rằng Array.from no support IE
Spread Syntax
Dùng spread Syntax này rất ngắn gọn và thần thánh 🤨 sử dụng chỉ với ...
🤷♀️
let str = "hi, i'm a web developer";
let charArr = [...str];
Regular expressions
Cách cuối cùng sử dụng Regular expressions cách này cũng khá ngắn gọn:
console.log(str.match(/[\s\S]/g)); // ["h", "i", ",", " ", "i", "'", "m",...]
Mình giải thích một chút: \s sẽ match với whitespace và \S sẽ là not whitespace khi kết hợp lại nó sẽ match bất kì kể cả khoảng trắng. flag g là global sẽ tìm kiếm toàn bộ kết quả phù hợp, nếu không có global flag nó sẽ match điều kiện thỏa mãn đầu tiên sau đó dừng lại.
Kết luận
Trên đây là một số cách ta có thể sử dụng để chuyển chuỗi string sang mảng các kí tự.
Hy vọng sau bài viết các bạn sẽ hiểu và ứng dụng nó vào trong trường hợp mà các bạn cần. Mình sẽ ra thêm các bài viết hay các bạn nhớ ủng hộ mình nhé.
Ngày mới tốt lành 😁🔥.