Title Case a sentences
TIL
763
freecodecamp
3
Studylog
1
Male avatar

Summerpurpil viết ngày 23/05/2018

Freecodecamp diary

Summerpurpil 23-05-2018

Hướng đi ban đầu (Spoiler Alert)

Ối giời ạ, cuối cùng thì hôm nay cũng qua được cái Title Case a Sentences trên Freecodecamp

ối giời ơi, nghiên cứu mãi, từ cú pháp rồi xem liệu có cái prototype nào mà mình chưa biết không mà sao nó cứ hiện lỗi như này
alt text
Mà rõ ràng mình đã code như thế này rồi
alt text
À đây mình sẽ giải thích thế này:
Đề bài là viết hoa chữ cái đầu của tất cả các từ của câu đã cho. Gợi ý dùng là sử dụng String.prototype.split và nhớ hãy viết thường lại tất cả các từ trước

Như gợi ý, mình .toLowerCase lại cả câu và gán vào biến lowCase
Vậy là từ câu "HERE IS MY HANDLE HERE IS MY SPOUT"
mình sẽ có kết quả là "here is my handle here is my spout"
Sau đó mình tiếp tục xé sản phẩm ra thành từng từ nhét vô mảng bam (băm ý mà).
Vậy là mình đã có một mảng băm như sau:
// bam = ["here","is","my","handle","here","is","my", "spout"]

Ok vâỵ là thịt đã trên thớt, mình viết ngay hàm for để có thể đưa lưỡi đến từng miếng thịt. Ý tưởng tiếp theo đấy là tiếp tục băm từng miếng ra một và nhét vô một mảng khác mình gọi là mảng tam (tạm ý mà). Vì ở mỗi vòng lặp mình lại thay đổi dữ liêụ trong mảng nên mình gọi nó vậy. Sau đó xử lý chữ cái đầu và .join chúng lại
* var tam = [];*
tam = bam[I].split('');
ví dụ ở i= 0:
tam= ["h", "e", "r", "e"]

Ok thế là mình đã truy cập được đến từng từ. Tuy nhiên ban đầu ý tưởng trên còn khá là mơ hồ nên mình chả biết thực hiện ra sao.
Sau đó đọc thêm về phương thức chuỗi .toUpperCase thì mình biết là nó không tác động đến chuỗi gốc (Original string) ở mảng gốc. Nên bạn phải gán kết quả vào một biến khác. Nhưng theo kinh nghiệm đã học C thì mình thay nó luôn vào biến đã có như sau, rồi join luôn để thành từ:
tam[0] = tam[0].toUpperCase();

Kết quả là *tam[0]=["H"]8

Đến đây thì mình đã có từ Here nhưng không thể đẩy nó vào mảng bam được mà phải tạo một cái hộp ở cấp global. Vậy nên bạn sẽ thấy mình viết:
var hop = [];

ở bên ngoài vòng for
Sau đó ở mỗi vòng lặp mình .push kết quả ở
var tam2 = tam.join('');
vào hop
Vậy là sau số vòng lặp bằng số từ của câu thì mình đã có trong hop =["Here", "Is", "My", "Handle" "Here", "Is", "My","Spout"]
Bây giờ chỉ việc .join chúng lại là xong thôi.

Phát hiện lỗi

Oài vậy mà cuối cùng nó vẫn báo lỗi và ứ chạy được. Sau 2 ngày mình phát hiện ra là mình viết điều kiện for bị sai một lỗi cơ bản. Đấy là i chạy từ 0, máy tính đếm số phần tử từ số 0, như vậy nếu câu có 4 từ thì bạn phải cho i < 4 vì từ 0 ->3 là đủ 4 phần tử được đếm rồi. Oài thật ngu si, bạn thấy mình viết i <= 4 chứ. Code của mình sau khi sửa lên xuống :
alt text

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

Male avatar

Summerpurpil

1 bài viết.
0 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Bài viết liên quan
White
0 4
fCC: Technical Documentation Page note So I have finished the HTML part of this exercise and I want to come here to lament about the lengthy HTML ...
HungHayHo viết hơn 2 năm trước
0 4
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


Male avatar
{{userFollowed ? 'Following' : 'Follow'}}
1 bài viết.
0 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!