Phương thức charCodeAt() trong JavaScript
Trần Thị Vân
- 999
- 01/09/2025
Chức năng của Phương thức charCodeAt() trong JavaScript
Phương thức charCodeAt() trong JavaScript dùng để lấy vị trí của một một ký tự trong một chuỗi sau đó trả về giá trị Unicode (hay mã ASCII) của ký tự đó, phương thức này không làm thay đổi nội dung của chuỗi gốc.
Cú pháp của Phương thức charCodeAt() trong JavaScript
var chuoimoi = chuoigoc.charCodeAt(vitri);
vitri: Ví trí cần lấy ký tự.
chuoigoc: Chuỗi gốc dùng để thực hiện charCodeAt(vitri) mà không làm thay đổi chuỗi gốc.
chuoimoi: Chuỗi mới lấy kết quả trả về là giá trị Unicode của ký tự cần lấy.
Code Phương thức charCodeAt() trong JavaScript
<script>
var chuoigoc = "aAbBcCdD";
// Lấy ký tự ở vị trí 0 và trả về giá trị Unicode
document.write("<b>// Lấy ký tự ở vị trí 0 và trả về giá trị Unicode</b><br>");
var giatri0 = chuoigoc.charCodeAt(0); // Kết quả: 97
document.write(giatri0 +"<br>");
// Lấy ký tự ở vị trí 1 và trả về giá trị Unicode
document.write("<b>// Lấy ký tự ở vị trí 1 và trả về giá trị Unicode</b><br>");
var giatri1 = chuoigoc.charCodeAt(1); // Kết quả: 65
document.write(giatri1 +"<br>");
// Lấy ký tự ở vị trí 2 và trả về giá trị Unicode
document.write("<b>// Lấy ký tự ở vị trí 2 và trả về giá trị Unicode</b><br>");
var giatri2 = chuoigoc.charCodeAt(2); // Kết quả: 98
document.write(giatri2 +"<br>");
// Lấy ký tự ở vị trí 3 và trả về giá trị Unicode
document.write("<b>// Lấy ký tự ở vị trí 3 và trả về giá trị Unicode</b><br>");
var giatri3 = chuoigoc.charCodeAt(3); // Kết quả: 66
document.write(giatri3 +"<br>");
</script>
Kết quả:
// Lấy ký tự ở vị trí 0 và trả về giá trị Unicode
97
// Lấy ký tự ở vị trí 1 và trả về giá trị Unicode
65
// Lấy ký tự ở vị trí 2 và trả về giá trị Unicode
98
// Lấy ký tự ở vị trí 3 và trả về giá trị Unicode
66
Những lưu ý khi sử dụng charCodeAt() trong JavaScript
Khi làm việc với charCodeAt(), cần chú ý cách JavaScript xác định vị trí ký tự và cách phương thức xử lý những ký tự đặc biệt. Hiểu rõ các trường hợp này giúp tránh kết quả không như mong đợi khi xử lý chuỗi.
charCodeAt() trả về gì khi chỉ số vượt quá độ dài chuỗi?
Tham số truyền vào charCodeAt() là vị trí của ký tự cần lấy mã. Vị trí được tính từ 0. Nếu vị trí không tồn tại trong chuỗi, phương thức không trả về mã ký tự mà trả về NaN.
const text = "JavaScript";
console.log(text.charCodeAt(0)); // 74
console.log(text.charCodeAt(20)); // NaN
Điều này cần được lưu ý khi chỉ số được tạo từ dữ liệu động. Nếu sử dụng kết quả tiếp tục cho phép tính hoặc so sánh, nên kiểm tra chỉ số trước để tránh xử lý một giá trị không hợp lệ.
Phân biệt charCodeAt() với codePointAt()
charCodeAt() làm việc với một đơn vị mã UTF-16, trong khi codePointAt() có thể lấy toàn bộ mã Unicode của một ký tự nằm ngoài phạm vi mà một đơn vị UTF-16 biểu diễn được.
Sự khác biệt này dễ nhận thấy với emoji hoặc một số ký tự Unicode đặc biệt. Một ký tự có thể được JavaScript biểu diễn bằng hai đơn vị UTF-16, vì vậy kết quả từ charCodeAt() có thể chỉ phản ánh một phần của ký tự đó.
const symbol = "????";
console.log(symbol.charCodeAt(0)); // 55357
console.log(symbol.codePointAt(0)); // 128512
Vì vậy, nếu chỉ xử lý các ký tự thông thường, charCodeAt() thường đáp ứng tốt nhu cầu. Khi cần làm việc chính xác với toàn bộ mã Unicode, đặc biệt là emoji, codePointAt() sẽ phù hợp hơn.
Xử lý ký tự Unicode và emoji bằng charCodeAt()
Không nên mặc định rằng mỗi ký tự nhìn thấy trên màn hình tương ứng với một vị trí duy nhất trong chuỗi JavaScript. Với các ký tự được biểu diễn bằng cặp surrogate, một ký tự có thể chiếm hai đơn vị mã.
const text = "A????B";
console.log(text.length); // 4
console.log(text.charCodeAt(1)); // Mã của surrogate thứ nhất
console.log(text.charCodeAt(2)); // Mã của surrogate thứ hai
Do đó, charCodeAt() phù hợp khi cần thao tác ở mức đơn vị UTF-16, nhưng có thể không phù hợp nếu mục tiêu là duyệt từng ký tự Unicode theo cách người dùng nhìn thấy. Đây là điểm quan trọng khi xử lý nội dung đa ngôn ngữ hoặc chuỗi có emoji.
Khi nào nên sử dụng charCodeAt() trong thực tế?
charCodeAt() hữu ích khi cần lấy mã UTF-16 của một ký tự để thực hiện các thao tác như kiểm tra phạm vi ký tự, xây dựng thuật toán xử lý chuỗi hoặc chuyển đổi dữ liệu dựa trên mã ký tự.
Trong các bài toán chỉ làm việc với ký tự thông thường, phương thức này có cách sử dụng đơn giản và dễ kiểm soát. Ngược lại, nếu ứng dụng phải xử lý Unicode phức tạp, nên cân nhắc codePointAt() để tránh hiểu sai một ký tự gồm nhiều đơn vị mã là nhiều ký tự độc lập.
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Phương thức charCodeAt() trong JavaScript.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *