2014-06-06 18 views

Trả lời

27

Miễn là bạn đang nói về các loại ES6, chúng không phải là cấu trúc dữ liệu giống nhau mặc dù Set có thể được triển khai với Map.

định nghĩa của bạn về Map là đúng, nhưng một Set là một tập hợp các giá trị duy nhất, không giống như một mảng có thể có bản sao.

var array = [1, 2, 3, 3]; 

var set = new Set(array); // Will have [1, 2, 3] 
assert(set.size, 3); 

var map = new Map(); 
map.set('a', 1); 
map.set('b', 2); 
map.set('c', 3); 
map.set('C', 3); 
map.set('a', 4); // Has: a, 4; b, 2; c: 3, C: 3 
assert(map.size, 4); 
+9

Tôi nghĩ rằng đó là giá trị thời gian để chỉ ra một cách rõ ràng rằng một Set không phải là một cửa hàng giá trị khóa. Nó cũng khác với một mảng ở chỗ nó không có thứ tự. –

+0

Tôi cũng muốn thêm: https://medium.com/ecmascript-2015/es6-set-map-weak-a2aeb7e2d384 – Thomas

2

Nhà phát triển thường chỉ sử dụng các đối tượng JavaScript thông thường khi họ muốn bản đồ.

var obj = {}; 
obj.name= "Anand Deep Singh"; 
console.log(obj.name); //logs "Anand Deep Singh" 

tương tự trong ES6, chúng tôi có thể sử dụng đối tượng thông thường.

var map = new Map(); 
map.set("name","Anand Deep Singh"); 
console.log(map.get("name")); //logs "Anand Deep Singh" 

Nhưng đáng chú ý điều là một bản đồ không được tạo ra với đen cú pháp đối tượng, và rằng ai sử dụng thiếtđược phương pháp để cửa hàngtruy cập dữ liệu.

Nó có một phương pháp để kiểm tra xem phím tồn tại trong đối tượng hay không, xóa phương pháp để xóa các đối tượng và rõ ràng phương pháp để xóa toàn bộ đối tượng.

Đặt là danh sách giá trị duy nhất. Nó chỉ đơn giản là một danh sách duy nhất.

var set = new Set(["a", "a","e", "b", "c", "b", "b", "b", "d"]); 
console.log(set); //logs Set {"a", "e", "b", "c", "d"} 

Không thể truy cập tập hợp như mảng và cung cấp cùng phương thức như Bản đồ.

Các vấn đề liên quan