👉 Giải Thuật 👈

Đếm số lượng các ký tự có trong chuỗi

Giải thuật đếm các ký tự trong chuổi bằng javascript
js_masterGiải Thuật
cau-truc-du-lieu-va-giai-thuat.jpg

Đế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ự

OFFJS.COM - Blog học tập giải trí - 🐲

Chia sẻ nhiều kiến thức thú vị trong lập trình cũng như cuộc sống.

Giới thiệu


Trang web này mình sẽ nói về kiến thức lập trình và cuộc sống mà các bạn mới học hay đang dự định học. Có một bước đi đầu đời vững chắc.

Hồ Quang Trí.jpg

Đi kèm với đó là những lý thuyết và các dòng code minh họa. Để các bạn dễ hình dung.

Đơn nhiên cũng không dễ dàng ngày một ngày hai mà học hết được.

Học Tập Là Một Con Đường Dài Vô Tận

Nó sẽ nuốt các bạn vô số thời gian nhưng bù lại khi đã biết thì mọi thứ thật là tuyệt.

1console.log("Hồ Quang Trí");

Nếu có ai nói bạn học lập trình trong vòng 3 đến 6 tháng thì mình xin nói thật không bao giờ có chuyện đó nhé.

Chúc các bạn thành công.

Chân trang

phone-toan-phat.png

0353210168

address-toan-phat.png

Việt Nam