ES6 - Bản đồ và Bộ
ES6 giới thiệu hai cấu trúc dữ liệu mới - maps và sets. Hãy cùng chúng tôi tìm hiểu chi tiết về chúng.
Bản đồ
Bản đồ là một bộ sưu tập có thứ tự của key-value pairs. Bản đồ tương tự như các đối tượng. Tuy nhiên, có một số khác biệt giữa bản đồ và vật thể. Chúng được liệt kê dưới đây -
Sr.No | Vật | Bản đồ |
---|---|---|
1 | Các phím không được là loại Đối tượng | Chìa khóa có thể là bất kỳ loại nào |
2 | Chìa khóa không được đặt hàng | Chìa khóa được đặt hàng |
3 | không thể lặp lại | có thể lặp lại |
Cú pháp
Cú pháp cho Bản đồ được đưa ra dưới đây:
let map = new Map([iterable])
let map = new Map()
Thí dụ
Ví dụ sau tạo một bản đồ bằng cách sử dụng một hàm tạo có thể lặp lại:
<script>
let andy = {ename:"Andrel"},
varun = {ename:"Varun"},
prijin = {ename:"Prijin"}
let empJobs = new Map([
[andy,'Software Architect'],
[varun,'Developer']]
);
console.log(empJobs)
</script>
Đầu ra của đoạn mã trên như hình dưới đây:
{{…} => "Software Architect", {…} => "Developer"}
Kiểm tra kích thước của bản đồ
Thuộc tính kích thước có thể được sử dụng để xác định số lượng giá trị được lưu trữ trong bản đồ.
Cú pháp
Cú pháp để kiểm tra kích thước của bản đồ được đưa ra dưới đây:
map_name.size
Thí dụ
<script>
let daysMap = new Map();
daysMap.set('1', 'Monday');
daysMap.set('2', 'Tuesday');
daysMap.set('3', 'Wednesday');
console.log(daysMap.size);
</script>
Đầu ra của đoạn mã trên như hình dưới đây:
3
Sau đây là một số phương pháp phổ biến có thể được sử dụng để thao tác trên bản đồ:
Sr.No | Đối tượng & Bản đồ |
---|---|
1 | set (key, value) Thêm khóa và giá trị vào bản đồ |
2 | get (key) Trả về giá trị nếu khóa được khớp |
3 | có (chìa khóa) Trả về true nếu tồn tại một phần tử có khóa được chỉ định; khác trả về false |
4 | phím () Trả về một trình lặp có chứa các khóa cho từng phần tử trong đối tượng bản đồ |
5 | giá trị () Trả về một trình lặp có chứa các giá trị cho từng phần tử trong đối tượng bản đồ |
6 | mục() Trả về một trình lặp có chứa các cặp khóa-giá trị cho mỗi phần tử trong Bản đồ |
7 | phím xoá) Xóa phần tử đã chỉ định khỏi đối tượng Bản đồ |
WeakMap
WeakMap nhỏ subset of map. Các khóa được tham chiếu yếu, vì vậy nó chỉ có thể là không nguyên thủy. Nếu không có tham chiếu đến các khóa đối tượng, nó sẽ bị thu gom rác.
- không thể lặp lại
- mỗi khóa là loại đối tượng
WeakMap sẽ cho phép thu thập rác nếu khóa không có tham chiếu.
Cú pháp
Cú pháp cho WeakMap được nêu dưới đây:
new WeakMap([iterable])
ví dụ 1
<script>
let emp = new WeakMap();
emp.set(10,'Sachin');// TypeError as keys should be object
</script>
Ví dụ 2
<script>
let empMap = new WeakMap();
// emp.set(10,'Sachin');// Error as keys should be object
let e1= {ename:'Kiran'},
e2 = {ename:'Kannan'},
e3 = {ename:'Mohtashim'}
empMap.set(e1,1001);
empMap.set(e2,1002);
empMap.set(e3,1003);
console.log(empMap)
console.log(empMap.get(e2))
console.log(empMap.has(e2))
empMap.delete(e1)
console.log(empMap)
</script>
Đầu ra của mã trên như được đề cập bên dưới:
{{…} => 1002, {…} => 1003, {…} => 1001}
1002
true
{{…} => 1002, {…} => 1003}
Bộ
Tập hợp là một tập hợp các giá trị duy nhất không có thứ tự. Cấu trúc dữ liệu này có thể chứa các giá trị của kiểu nguyên thủy và kiểu đối tượng.
Cú pháp
Cú pháp cho Set được đưa ra dưới đây:
new Set([iterable])
new Set()
Thí dụ
<script>
let names = new Set(['A','B','C','D']);
console.log(names)
</script>
Đầu ra của đoạn mã trên như dưới đây:
{"A", "B", "C", "D"}
Kiểm tra kích thước của một tập hợp
Thuộc tính size của đối tượng Set có thể được sử dụng để truy vấn số phần tử trong Tập hợp.
Cú pháp
Cú pháp để kiểm tra kích thước của một tập hợp được đề cập dưới đây:
set.size
Thí dụ
<script>
let names = new Set(['A','B','C','D']);
console.log(names.size)
</script>
Đầu ra của đoạn mã trên như dưới đây:
4
Lặp lại một bộ
Chúng ta có thể sử dụng forEach và for..ofvòng lặp để lặp qua một Tập hợp. Điều này được hiển thị trong ví dụ dưới đây -
Thí dụ
<script>
let names= new Set(['A','B','C','D']);
//iterate using forEach
console.log('forEach')
names.forEach(n=>console.log(n))
console.log('for of..')
//iterate using for..of
for(let n of names){
console.log(n)
}
</script>
Đầu ra của mã trên như được đề cập bên dưới:
forEach
A
B
C
D
for of..
A
B
C
D
Các phương pháp sau có thể được sử dụng để thao tác một tập hợp:
Sr.No | Đối tượng & Bản đồ |
---|---|
1 | thêm (phần tử) Thêm một phần tử vào Tập hợp |
2 | có (phần tử) Trả về true nếu phần tử được tìm thấy; khác trả về false |
3 | xóa (phần tử) Xóa phần tử cụ thể khỏi Tập hợp |
4 | thông thoáng() Xóa tất cả các phần tử khỏi Tập hợp |
WeakSet
Weakset lưu giữ các đối tượng một cách yếu ớt, điều đó có nghĩa là đối tượng được lưu trữ trong WeakSet phải được thu gom rác, nếu chúng không được tham chiếu. WeakSets không thể lặp lại và không cóget phương pháp.
<script>
let e1 = {ename:'A'}
let e2 ={ename:'B'}
let e3 ={ename:'C'}
let emps = new WeakSet();
emps.add(e1);
emps.add(e2)
.add(e3);
console.log(emps)
console.log(emps.has(e1))
emps.delete(e1);
console.log(emps)
</script>
Đầu ra của đoạn mã trên sẽ như được đề cập bên dưới:
WeakSet {{…}, {…}, {…}}
true
WeakSet {{…}, {…}}