Lưu ý khi sử dụng Object làm Hashmap trong JavaScript
TIL
498
@100daysTIL
43
White

Huy Trần viết ngày 05/02/2018

#Day003

Mặc dù JavaScript đã có kiểu Map, nhiều người vẫn muốn dùng Object để làm hashmap đơn giản vì nó tiện. Kiểu như này:

let hash = {};
hash["a"] = 10;

Vấn đề của cách dùng này nằm ở cách mà JavaScript khởi tạo Object, câu lệnh khai báo biến hash trên tương đương với:

let hash = Object.create(Object.prototype);

Đối tượng hash được khởi tạo và kế thừa từ Object.prototype, nên cấu trúc của nó sẽ như này:

alt text

Các key trong Prototype của Object có thể được truy xuất trực tiếp trên hash luôn, như vậy sẽ có khả năng bị collapse (trùng key) khi dùng nó làm hashmap.

Một cách để loại bỏ Prototype đó là truyền null vào tham số prototype khi khởi tạo Object:

let hash = Object.create(null);
hash["a"] = 10;

alt text

huytd 06-02-2018

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

White

Huy Trần

102 bài viết.
1440 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
146 43
Tại sao phải viết blog kĩ thuật? Có rất nhiều bài viết trên mạng nói về vấn đề tại sao một lập trình viên nên thường xuyên viết các bài blog kĩ thu...
Huy Trần viết hơn 2 năm trước
146 43
White
143 37
(Ảnh) Tiếp tục sêri (Link) lần này, chúng ta sẽ cùng tìm hiểu và mô phỏng lại một chức năng mà mọi người đang bắt đầu sử dụng hằng ngày, đó là chứ...
Huy Trần viết hơn 1 năm trước
143 37
White
97 16
Phần 1: Tự truyện Tui và Toán đã từng là hai kẻ thù không đội trời chung trong suốt hơn mười lăm năm ròng rã. Ngay từ ánh nhìn đầu tiên đã ghét nh...
Huy Trần viết gần 2 năm trước
97 16
Bài viết liên quan
White
2 0
D3.js Biểu diễn dữ liệu dạng tree bằng việc trải nó ra trên bản đồ Series Today I Learn trong vòng 100 ngày thử thách bản thân ngày 15. Mỗi ngày 1...
ngminhtrung viết 16 ngày trước
2 0
White
18 1
Toán tử XOR có tính chất: + A XOR A = 0 + 0 XOR A = A Với tính chất này, có thể cài đặt bài toán sau với độ phức tạp O(N) về runtime, và với O(1)...
kiennt viết hơn 1 năm trước
18 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


White
{{userFollowed ? 'Following' : 'Follow'}}
102 bài viết.
1440 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á!