Đếm số lượng các ký tự có trong chuỗi
Đếm độ dài của chuỗi
Bình thường trong javascript khi chúng ta muốn lấy độ dài chuỗi. Chúng ta có thể làm nó với nhiều cách.
1let name = "Hồ Quang Trí" 2let lengthName = name.length; 3console.log(lengthName); // 12
length ở đây là thuộc tính chiều dài của đối tượng.
Các bạn có thể xem thêm nó tại đây: length
Viết chức năng lấy độ dài chuỗi
Bây giờ mình sẽ hướng dẫn các bạn viết chức năng lấy ra độ dài chuỗi. Trong chức năng này mình chỉ lấy độ dài. Nên mình chưa tính đến lỗi nhé.
1function lengthStr(string) { 2 let length = 0; 3 for(let v of string){ 4 length ++; 5 } 6 return length; 7} 8 9console.log(lengthStr("Hồ Quang Trí")); // 12
Lưu ý: Nó có rất rất là nhiều cách
Hoặc chúng ta có thể lặp nó bằng.
1function lengthStr(string) { 2 let length = 0; 3 for(let i = 0; i < string.length; i++){ 4 length ++; 5 } 6 return length; 7} 8console.log(lengthStr("Hồ Quang Trí"));
Nó cũng chạy tương đương như ví dụ ở trên. Vậy giả sử nếu ai đó truyền dữ liệu đầu vào không phải string thì sao ??
1function lengthStr(string) { 2 let length = 0; 3 for(let i = 0; i < string.length; i++){ 4 length ++; 5 } 6 return length; 7} 8 9console.log(lengthStr(null)); // Uncaught TypeError: Cannot read properties of null
Vậy lỗi này văng ra ở đâu. Lỗi văng ra tại vị trí string.length bởi vì nó không thể đọc được length.
Thế cách chạy nó như thế nào.
Khi chúng ta gọi lengthStr(null) nó đi vào chức năng. Dòng đầu tiên chúng ta khai báo biến let length = 0. Sau đó chạy đến dòng tiếp theo. Vào lặp for chạy. Chúng ta khai báo và gán let i = 0. Sau đó nó so sánh i < string.length. Bây giờ nghĩa là 0 < string.length. Đến lúc này nó đọc string.length và không có thuộc tính đó nên nó văng lỗi. Trình biên dịch ngừng chạy. Thế là kết thúc chương trình.
Vậy cách khắc phục nó như thế nào ??
Rất đơn giản và có rất rất nhiều cách. Cách ở đây mình dùng là trả về chuỗi lỗi.
1function lengthStr(string) { 2 if(typeof string !== "string"){ 3 return "Đầu vào không hợp lệ"; 4 } 5 let length = 0; 6 for(let i = 0; i < string.length; i++){ 7 length ++; 8 } 9 return length; 10} 11 12console.log(lengthStr(null)); // Đầu vào không hợp lệ
Thêm nó vào [Prototype]
Ví dụ trên là mình viết nó và gọi nó theo chức năng. Bây giờ mình muốn gọi nó theo cách "Hồ Quang Trí".myLength thì phải làm như thế nào.
Chúng ta cùng sữa đổi lại code của chúng ta một chút.
1function lengthStr(string) { 2 if (typeof String(string) !== "string") { 3 return "Đầu vào không hợp lệ"; 4 } 5 6 let length = 0; 7 for (let i = 0; i < string.length; i++) { 8 length++; 9 } 10 return length; 11 } 12 13 Object.defineProperty(String.prototype, "myLength", { 14 get() { 15 return lengthStr(this); 16 } 17}) 18console.log("Hồ Quang Trí".myLength); // 12
Tổng kết
Cuối cùng chúng ta cũng đã làm ra được một thuộc tính myLenght. Nó cũng đơn giản đúng không các bạn. Ngôn ngữ nào cũng vậy thôi. Như nhau cả.
- đếm độ dài chuỗi
- số lượng
- ký tự
Các bài viết liên quan
Chuyển đổi kiểu dữ liệu
Chuyển đổi kiểu có nghĩa là chuyển từ kiểu dữ liệu này sang kiểu dữ liệu khácJavascriptCác kiểu dữ liệu trong javascript
Trong tất cả ngôn ngữ lập trình đều có các kiểu dữ liệu. Và trong javascript cũng vậyJavascriptJavascript là gì
Javascript là một ngôn ngữ lập trình. Được thiết kế dựa trên nguyên mẫu [prototype].Javascript