Chào các bạn, hôm nay anh sẽ hướng dẫn mọi người về Map của ES6. Lần lượt giới thiệu và và đi qua các ví dụ về Map được sử dụng trong ES6.
ES6 cung cấp một dạng tập hợp mới gọi là Map. Map sẽ lưu các phần tử theo KEY và VALUE. Cú pháp tạo Map trong ES6 như sau
1
let map = new Map([iterable]);
Ví dụ chúng ta tạo một map trong ES6 như sau.
1
let students = new Map();
Một số phương thức hữu ích của map là :
Tạo đối tượng Map. Giả sử như anh có danh sách các users (người dùng như sau)
1
2
3
let john = {name: 'John Doe'},
lily = {name: 'Lily Bush'},
peter = {name: 'Peter Drucker'};
Bây giờ anh muốn tạo quyền cho mỗi users bằng cách dùng map như sau.
1
let userRoles = new Map();
Tiếp đến ta set quyền cho user như sau.
1
userRoles.set(john, 'admin');
Chúng ta sử dụng phương thức set để thiết lập john tương ứng với role là admin. Tiếp đến chúng ta có thể set quyền cho lily và peter như sau.
1
2
userRoles.set(lily, 'editor')
.set(peter, 'subscriber');
Ngoài cách làm ở trên chúng ta có thể truyền một iterable khi khởi tạo đối tượng map như sau.
1
2
3
4
5
let userRoles = new Map([
[john, 'admin'],
[lily, 'editor'],
[peter, 'subscriber']
]);
Bây giờ nếu chúng ta muốn xem role của john là gì thì sử dụng phương thức get như sau.
1
userRoles.get(john); // admin
Nếu chúng ta truyền vào KEY mà không có trong Map thì sẽ nhận được giá trị undefined
1
2
let foo = {name: 'Foo'};
userRoles.get(foo); //undefined
Kiểm tra xem key có tồn tại hay không bằng phương thức has như sau.
1
2
userRoles.has(foo); // false
userRoles.has(lily); // true
Để lấy kích thướt của map thì ta sử dụng phương thức size như sau
1
console.log(userRoles.size); // 3
Để duyệt qua các phần tử ta sử dụng phương thức keys. Ví dụ như anh muốn duyệt qua các user như sau.
1
2
3
4
5
6
for (let user of userRoles.keys()) {
console.log(user.name);
}
// John Doe
// Lily Bush
// Peter Drucker
Để duyệt qua các role có trong map anh thực hiện như sau
1
2
3
4
5
6
for (let role of userRoles.values()) {
console.log(role);
}
// admin
// editor
// subscriber
Để duyệt qua các phần tử gồm có key và value trong map thì anh sử dụng phương thức entries() như sau.
1
2
3
4
5
6
7
for (let elem of userRoles.entries()) {
console.log(`${elem[0].name}: ${elem[1]}`);
}
// John Doe: admin
// Lily Bush: editor
// Peter Drucker: subscriber
Chúng ta có thể áp dụng destruction để viết code như sau nhưng vẫn cho ra kết quả như trên
1
2
3
for (let [user,role] of userRoles.entries()) {
console.log(`${user.name}: ${role}`);
}
Chúng ta cũng có thể dùng vòng lặp forEach để duyệt qua các phần tử trong map như sau.
1
2
3
userRoles.forEach((role, user) =>
console.log(`${user.name}: ${role}`)
);
Chuyển đổi (convert) các KEY hoặc VALUE trong map thành mảng (Array) bằng cách sử dụng toán tử spread như sau.
1
2
3
4
5
6
7
8
var keys = [...userRoles.keys()];
console.log(keys);
kết quả
[ { name: 'John Doe' },
{ name: 'Lily Bush' },
{ name: 'Peter Drucker' } ]
Để convert các Value qua mảng ta làm như sau
1
2
3
4
var roles = [...userRoles.values()];
console.log(roles);
[ 'admin', 'editor', 'subscriber' ]
Để xoá một phần tử trong map ta sử dụng phương thức delete như sau.
1
userRoles.delete(john);
Để xoá hết các phần tử ta sử dụng phương thức clear như sau.
1
userRoles.clear();