Tổng quan về Intl trong JavaScript

https://dribbble.com/shots/7000116-Illustration-for-website-about-us-page

Sắp xếp chuỗi theo ngôn ngữ với Intl.Collator

Mỗi ngôn ngữ đều có quy định về thứ tự sắp xếp trong bản chữ cái của mình. Ví dụ như tiếng Việt thì “ă” phải trước “â”, hay “ô” xong rồi mới tới “ư” vậy. Cái này tiếng Anh gọi là “collation” ha. Xem thử việc sắp xếp các tỉnh thành bằng JavaScript.

const provinces = ['Bến Tre', 'Bình Định', 'Bắc Giang']
provinces.sort()
// [ "Bình Định", "Bắc Giang", "Bến Tre" ] 👎
// Không đúng vì "ă" phải đi trước "ê" rồi mới tới "i"

Một cách để giải quyết là dùng String#localeCompare như sau:

provinces.sort(((a, b) => a.localeCompare(b))
// [ "Bắc Giang", "Bến Tre", "Bình Định" ] 👍

Hoặc chúng ta có thể dùng thẳng Intl.Collator#compare vì theo MDN, String#localeCompare cũng sử dụng phương thức này trong các hệ thống có hỗ trợ Intl. Cách sử dụng đơn giản nhất là:

provinces.sort(new Intl.Collator('vi').compare)
// [ "Bắc Giang", "Bến Tre", "Bình Định" ] 👍

Theo specs thì bạn có thể không cần new để khởi tạo đối tượng Intl.Collator() 👉 Intl.Collator() hay new Intl.Collator() cũng như nhau.

Hàm dựng (constructor) của Intl.Collator có chữ ký là:

new Intl.Collator()
new Intl.Collator(locales)
new Intl.Collator(locales, options)

Trong đó:

  • locales: Là chuỗi định dạng ngôn ngữ theo chuẩn BCP 47, hoặc mảng các chuỗi này
  • options: Là một object tùy chọn. Chi tiết thì có thể tham khảo ở đây. Theo mình thì có hai thuộc tính thường sử dụng:
    • options.numeric:
    • options.caseFirst:

Định dạng tiền tệ

Định dạng đơn vị

Lấy danh sách múi giờ

Kết