Kiểm tra khóa tồn tại trong Map JavaScript

Tóm lược. trong hướng dẫn này, bạn sẽ tìm hiểu về đối tượng Bản đồ JavaScript ánh xạ một khóa tới một giá trị

Giới thiệu về đối tượng Bản đồ JavaScript

Trước ES6, chúng tôi thường sử dụng một đối tượng để giả lập bản đồ bằng cách ánh xạ một khóa tới một giá trị thuộc bất kỳ loại nào. Nhưng sử dụng một đối tượng làm bản đồ có một số tác dụng phụ

  1. Một đối tượng luôn có một khóa mặc định giống như nguyên mẫu
  2. Khóa của một đối tượng phải là một chuỗi hoặc ký hiệu, bạn không thể sử dụng một đối tượng làm khóa
  3. Một đối tượng không có thuộc tính đại diện cho kích thước của bản đồ

ES6 cung cấp một loại bộ sưu tập mới có tên là

let userRoles = new Map();

Code language: JavaScript (javascript)
5 để giải quyết những thiếu sót này

Theo định nghĩa, một đối tượng

let userRoles = new Map();

Code language: JavaScript (javascript)
5 chứa các cặp khóa-giá trị. Các khóa là duy nhất trong bộ sưu tập của Bản đồ. Nói cách khác, một khóa trong đối tượng Bản đồ chỉ xuất hiện một lần

Các khóa và giá trị của Bản đồ có thể là bất kỳ giá trị nào

Khi lặp một đối tượng

let userRoles = new Map();

Code language: JavaScript (javascript)
5, mỗi lần lặp trả về một mảng 2 phần tử của

let userRoles = new Map();

Code language: JavaScript (javascript)
8. Thứ tự lặp lại tuân theo thứ tự chèn tương ứng với thứ tự mà mỗi cặp khóa-giá trị được chèn lần đầu tiên vào Bản đồ bằng phương pháp

let userRoles = new Map();

Code language: JavaScript (javascript)
9

Để tạo một

let userRoles = new Map();

Code language: JavaScript (javascript)
5 mới, bạn sử dụng cú pháp sau

let map = new Map([iterable]);

Code language: JavaScript (javascript)

console.log(typeof(userRoles)); // object console.log(userRoles instanceof Map); // true

Code language: JavaScript (javascript)
1 chấp nhận một đối tượng có thể lặp lại tùy chọn có các phần tử là cặp khóa-giá trị

Các phương thức Bản đồ JavaScript hữu ích

  • console.log(typeof(userRoles)); // object console.log(userRoles instanceof Map); // true

    Code language: JavaScript (javascript)
    2 – xóa tất cả các phần tử khỏi đối tượng bản đồ
  • console.log(typeof(userRoles)); // object console.log(userRoles instanceof Map); // true

    Code language: JavaScript (javascript)
    3 – xóa phần tử được chỉ định bởi khóa. Nó trả về nếu phần tử có trong bản đồ hoặc sai nếu không
  • console.log(typeof(userRoles)); // object console.log(userRoles instanceof Map); // true

    Code language: JavaScript (javascript)
    4 – trả về một đối tượng Iterator mới chứa một mảng

    let userRoles = new Map();

    Code language: JavaScript (javascript)
    8 cho mỗi phần tử trong đối tượng bản đồ. Thứ tự của các đối tượng trong bản đồ giống như thứ tự chèn
  • console.log(typeof(userRoles)); // object console.log(userRoles instanceof Map); // true

    Code language: JavaScript (javascript)
    6 – gọi một cuộc gọi lại cho từng cặp khóa-giá trị trong bản đồ theo thứ tự chèn. Tham số thisArg tùy chọn đặt giá trị

    console.log(typeof(userRoles)); // object console.log(userRoles instanceof Map); // true

    Code language: JavaScript (javascript)
    7 cho mỗi lần gọi lại
  • get(key) – trả về giá trị được liên kết với khóa. Nếu khóa không tồn tại, nó sẽ trả về không xác định
  • has(key) – trả về true nếu giá trị liên kết với key tồn tại hoặc false nếu ngược lại
  • console.log(typeof(userRoles)); // object console.log(userRoles instanceof Map); // true

    Code language: JavaScript (javascript)
    8 – trả về một Iterator mới chứa các khóa cho các phần tử theo thứ tự chèn
  • console.log(typeof(userRoles)); // object console.log(userRoles instanceof Map); // true

    Code language: JavaScript (javascript)
    9 – đặt giá trị cho khóa trong đối tượng bản đồ. Nó trả về chính đối tượng bản đồ, do đó bạn có thể xâu chuỗi phương thức này với các phương thức khác
  • let userRoles = new Map();

    Code language: JavaScript (javascript)
    60 trả về một đối tượng lặp mới chứa các giá trị cho từng phần tử theo thứ tự chèn

Các ví dụ về Bản đồ JavaScript

Hãy lấy một số ví dụ về việc sử dụng đối tượng Bản đồ

Tạo một đối tượng Bản đồ mới

Giả sử bạn có một danh sách các đối tượng

let userRoles = new Map();

Code language: JavaScript (javascript)
61 như sau

let userRoles = new Map();

Code language: JavaScript (javascript)
8

Giả sử rằng bạn phải tạo bản đồ người dùng và vai trò. Trong trường hợp này, bạn sử dụng đoạn mã sau

let userRoles = new Map();

Code language: JavaScript (javascript)

let userRoles = new Map();

Code language: JavaScript (javascript)
62 là một thể hiện của đối tượng

let userRoles = new Map();

Code language: JavaScript (javascript)
5 và kiểu của nó là một đối tượng như minh họa trong ví dụ sau

console.log(typeof(userRoles)); // object console.log(userRoles instanceof Map); // true

Code language: JavaScript (javascript)

Thêm phần tử vào Bản đồ

Để gán vai trò cho người dùng, bạn sử dụng phương thức

let userRoles = new Map();

Code language: JavaScript (javascript)
9

let userRoles = new Map();

Code language: JavaScript (javascript)
6

Phương thức

let userRoles = new Map();

Code language: JavaScript (javascript)
9 ánh xạ người dùng

let userRoles = new Map();

Code language: JavaScript (javascript)
66 với vai trò

let userRoles = new Map();

Code language: JavaScript (javascript)
67. Vì phương thức

let userRoles = new Map();

Code language: JavaScript (javascript)
9 có thể xâu chuỗi, nên bạn có thể lưu một số thao tác nhập như trong ví dụ này

let userRoles = new Map();

Code language: JavaScript (javascript)
9

Khởi tạo bản đồ với một đối tượng có thể lặp lại

Như đã đề cập trước đó, bạn có thể truyền một đối tượng có thể lặp lại cho hàm tạo

console.log(typeof(userRoles)); // object console.log(userRoles instanceof Map); // true

Code language: JavaScript (javascript)
1

let userRoles = new Map();

Code language: JavaScript (javascript)
1

Nhận một phần tử từ bản đồ bằng phím

Nếu muốn xem vai trò của

let userRoles = new Map();

Code language: JavaScript (javascript)
90 thì bạn dùng phương thức

let userRoles = new Map();

Code language: JavaScript (javascript)
91

let userRoles = new Map();

Code language: JavaScript (javascript)
4

Nếu bạn chuyển một khóa không tồn tại, phương thức

let userRoles = new Map();

Code language: JavaScript (javascript)
91 sẽ trả về

let userRoles = new Map();

Code language: JavaScript (javascript)
93

let userRoles = new Map();

Code language: JavaScript (javascript)
7

Kiểm tra sự tồn tại của một phần tử bằng khóa

Để kiểm tra xem một khóa có tồn tại trong bản đồ hay không, bạn sử dụng phương pháp

let userRoles = new Map();

Code language: JavaScript (javascript)
94

let userRoles = new Map();

Code language: JavaScript (javascript)
9

Lấy số phần tử trong bản đồ

Thuộc tính

let userRoles = new Map();

Code language: JavaScript (javascript)
95 trả về số lượng mục nhập của đối tượng Bản đồ

let userRoles = new Map();

Code language: JavaScript (javascript)
80

Lặp lại các phím bản đồ

Để lấy key của một đối tượng

let userRoles = new Map();

Code language: JavaScript (javascript)
5, bạn sử dụng phương thức

console.log(typeof(userRoles)); // object console.log(userRoles instanceof Map); // true

Code language: JavaScript (javascript)
8.

console.log(typeof(userRoles)); // object console.log(userRoles instanceof Map); // true

Code language: JavaScript (javascript)
8 trả về một đối tượng iterator mới chứa các khóa của các phần tử trong bản đồ

Ví dụ sau hiển thị tên người dùng của người dùng trong đối tượng bản đồ

let userRoles = new Map();

Code language: JavaScript (javascript)
62

let userRoles = new Map();

Code language: JavaScript (javascript)
81

đầu ra

let userRoles = new Map();

Code language: JavaScript (javascript)
82

Lặp lại các giá trị bản đồ

Tương tự, bạn có thể sử dụng phương thức

let userRoles = new Map();

Code language: JavaScript (javascript)
60 để lấy một đối tượng iterator chứa các giá trị cho tất cả các thành phần trong bản đồ

let userRoles = new Map();

Code language: JavaScript (javascript)
83

đầu ra

let userRoles = new Map();

Code language: JavaScript (javascript)
84

Lặp lại các phần tử bản đồ

Ngoài ra, phương thức

console.log(typeof(userRoles)); // object console.log(userRoles instanceof Map); // true

Code language: JavaScript (javascript)
4 trả về một đối tượng iterator chứa một mảng

let userRoles = new Map();

Code language: JavaScript (javascript)
12 của mỗi phần tử trong đối tượng

let userRoles = new Map();

Code language: JavaScript (javascript)
5

let userRoles = new Map();

Code language: JavaScript (javascript)
85

Để làm cho phép lặp tự nhiên hơn, bạn có thể sử dụng phá hủy như sau

let userRoles = new Map();

Code language: JavaScript (javascript)
86

Ngoài vòng lặp

let userRoles = new Map();

Code language: JavaScript (javascript)
14, bạn có thể sử dụng phương thức

let userRoles = new Map();

Code language: JavaScript (javascript)
15 của đối tượng bản đồ

let userRoles = new Map();

Code language: JavaScript (javascript)
87

Chuyển đổi các khóa hoặc giá trị bản đồ thành một mảng

Đôi khi, bạn muốn làm việc với một mảng thay vì một đối tượng có thể lặp lại, trong trường hợp này, bạn có thể sử dụng toán tử trải rộng

Ví dụ sau chuyển đổi các khóa cho từng phần tử thành một mảng các khóa

let userRoles = new Map();

Code language: JavaScript (javascript)
88

đầu ra

let userRoles = new Map();

Code language: JavaScript (javascript)
89

Và sau đây chuyển đổi các giá trị của các phần tử thành một mảng

let userRoles = new Map();

Code language: JavaScript (javascript)
0

đầu ra

let userRoles = new Map();

Code language: JavaScript (javascript)
1

Xóa một phần tử bằng phím

Để xóa một mục trong bản đồ, bạn sử dụng phương pháp

let userRoles = new Map();

Code language: JavaScript (javascript)
16

let userRoles = new Map();

Code language: JavaScript (javascript)
2

Xóa tất cả các yếu tố trong bản đồ

Để xóa tất cả các mục trong đối tượng

let userRoles = new Map();

Code language: JavaScript (javascript)
5, bạn sử dụng phương thức

console.log(typeof(userRoles)); // object console.log(userRoles instanceof Map); // true

Code language: JavaScript (javascript)
2

let userRoles = new Map();

Code language: JavaScript (javascript)
3

Do đó, kích thước của bản đồ bây giờ bằng không

let userRoles = new Map();

Code language: JavaScript (javascript)
4

Bản đồ yếu

Một

let userRoles = new Map();

Code language: JavaScript (javascript)
19 tương tự như một

let userRoles = new Map();

Code language: JavaScript (javascript)
5 ngoại trừ các khóa của một

let userRoles = new Map();

Code language: JavaScript (javascript)
19 phải là các đối tượng. Điều đó có nghĩa là khi tham chiếu đến một khóa (một đối tượng) nằm ngoài phạm vi, giá trị tương ứng sẽ tự động được giải phóng khỏi bộ nhớ

Một

let userRoles = new Map();

Code language: JavaScript (javascript)
19 chỉ có các phương thức tập hợp con của một đối tượng

let userRoles = new Map();

Code language: JavaScript (javascript)
5

  • let userRoles = new Map();

    Code language: JavaScript (javascript)
    44
  • console.log(typeof(userRoles)); // object console.log(userRoles instanceof Map); // true

    Code language: JavaScript (javascript)
    9
  • let userRoles = new Map();

    Code language: JavaScript (javascript)
    46
  • console.log(typeof(userRoles)); // object console.log(userRoles instanceof Map); // true

    Code language: JavaScript (javascript)
    3

Đây là sự khác biệt chính giữa

let userRoles = new Map();

Code language: JavaScript (javascript)
5 và

let userRoles = new Map();

Code language: JavaScript (javascript)
49

  • Các phần tử của WeakMap không thể được lặp lại
  • Không thể xóa tất cả các yếu tố cùng một lúc
  • Không thể kiểm tra kích thước của WeakMap

Trong hướng dẫn này, bạn đã học cách làm việc với đối tượng Bản đồ JavaScript và các phương thức hữu ích của nó để thao tác các mục trong bản đồ

Làm cách nào để kiểm tra xem một đối tượng có chứa khóa trong JavaScript không?

Cách kiểm tra xem đối tượng có khóa hay không trong JavaScript bằng Phương thức hasOwnProperty() . phương pháp của anh ấy khá giống với toán tử in. Nó nhận vào một chuỗi và sẽ trả về true nếu khóa tồn tại trong đối tượng và sai nếu không.

Làm cách nào để kiểm tra xem một khóa có tồn tại trong một mảng JavaScript không?

Sử dụng hàm hasOwnProperty() . Hàm này lấy khóa của đối tượng làm tham số và trả về kết quả Boolean tương ứng.