CodeGym /Các khóa học /Frontend SELF VI /Cấu trúc dữ liệu mới: Map, Set

Cấu trúc dữ liệu mới: Map, Set

Frontend SELF VI
Mức độ , Bài học
Có sẵn

3.1 Bộ sưu tập Map

Trong ECMAScript 2015 (ES6), JavaScript đã thêm hai cấu trúc dữ liệu mới: MapSet. Những cấu trúc dữ liệu này cung cấp các cách linh hoạt và hiệu quả hơn để lưu trữ và quản lý các bộ sưu tập dữ liệu so với các đối tượng và mảng truyền thống.

Map — đây là cấu trúc dữ liệu cho phép lưu trữ cặp khóa-giá trị nơi mà các khóa có thể thuộc bất kỳ loại nào, kể cả đối tượng và hàm.

1. Tạo và khởi tạo Map:

JavaScript
    
      const map = new Map();
    
  

2. Thêm phần tử:

Phương thức set được sử dụng để thêm cặp khóa-giá trị mới vào Map.

JavaScript
    
      map.set('key1', 'value1');
      map.set(2, 'value2');
      map.set({ name: 'objectKey' }, 'value3');
    
  

3. Lấy phần tử:

Phương thức get được sử dụng để lấy giá trị theo khóa.

JavaScript
    
      const map = new Map();

      map.set('key1', 'value1');
      map.set(2, 'value2');
      map.set({ name: 'objectKey' }, 'value3');

      console.log(map.get('key1')); // 'value1'
      console.log(map.get(2)); // 'value2'
    
  

4. Kiểm tra sự tồn tại của khóa:

Phương thức has kiểm tra xem khóa có tồn tại trong Map hay không.

JavaScript
    
      const map = new Map();

      map.set('key1', 'value1');
      map.set(2, 'value2');
      map.set({ name: 'objectKey' }, 'value3');

      console.log(map.has('key1')); // true
      console.log(map.has('key3')); // false
    
  

5. Xóa phần tử:

Phương thức delete xóa phần tử theo khóa.

JavaScript
    
      const map = new Map();

      map.set('key1', 'value1');
      map.set(2, 'value2');
      map.set({ name: 'objectKey' }, 'value3');

      map.delete('key1');
      console.log(map.has('key1')); // false
    
  

6. Xóa toàn bộ Map:

Phương thức clear xóa tất cả phần tử khỏi Map.

JavaScript
    
      const map = new Map();

      map.set('key1', 'value1');
      map.set(2, 'value2');
      map.set({ name: 'objectKey' }, 'value3');

      map.clear();
      console.log(map.size); // 0
    
  

7. Duyệt qua Map:

Bạn có thể sử dụng vòng lặp for...of để duyệt qua Map.

Ví dụ:

JavaScript
    
      const map = new Map();
      map.set('key1', 'value1');
      map.set(2, 'value2');

      for (const [key, value] of map) {
        console.log(`${key}: ${value}`);
      }

      // 'key1: value1'
      // '2: value2'
    
  

3.2 Bộ sưu tập Set

Set — đây là cấu trúc dữ liệu cho phép lưu trữ các giá trị duy nhất thuộc bất kỳ loại nào, bao gồm cả đối tượng và các kiểu dữ liệu nguyên thủy.

1. Tạo và khởi tạo Set:

JavaScript
    
      const set = new Set();
    
  

2. Thêm phần tử:

Phương thức add được sử dụng để thêm giá trị mới vào Set.

JavaScript
    
      set.add(1);
      set.add('value2');
      set.add({ name: 'objectValue' });
    
  

3. Kiểm tra sự tồn tại của giá trị:

Phương thức has kiểm tra xem giá trị có tồn tại trong Set hay không.

JavaScript
    
      const set = new Set();

      set.add(1);
      set.add('value2');
      set.add({ name: 'objectValue' });

      console.log(set.has(1)); // true
      console.log(set.has('value3')); // false
    
  

4. Xóa phần tử:

Phương thức delete xóa giá trị khỏi Set.

JavaScript
    
      const set = new Set();

      set.add(1);
      set.add('value2');
      set.add({ name: 'objectValue' });

      set.delete(1);
      console.log(set.has(1)); // false
    
  

5. Xóa toàn bộ Set:

Phương thức clear xóa tất cả phần tử khỏi Set.

JavaScript
    
      const set = new Set();

      set.add(1);
      set.add('value2');
      set.add({ name: 'objectValue' });

      set.clear();
      console.log(set.size); // 0
    
  

6. Duyệt qua Set:

Bạn có thể sử dụng vòng lặp for...of để duyệt qua Set.

JavaScript
    
      const set = new Set();
      set.add(1);
      set.add('value2');

      for (const value of set) {
        console.log(value);
      }

      // 1
      // 'value2'
    
  

3.3 So sánh Map và Set

Lợi thế của Map:

  1. Khóa tùy ý: trong Map các khóa có thể thuộc bất kỳ loại nào, bao gồm cả đối tượng và hàm, không giống như đối tượng chỉ có khóa là chuỗi hoặc ký hiệu.
  2. Phần tử có thứ tự: các phần tử trong Map giữ nguyên thứ tự thêm vào, giúp dễ dàng duyệt qua theo thứ tự thêm vào.
  3. Kích thước bộ sưu tập: phương thức size cho phép nhanh chóng biết số lượng phần tử trong Map.

Lợi thế của Set:

  1. Giá trị duy nhất: Set tự động đảm bảo rằng tất cả các phần tử của nó là duy nhất.
  2. Phần tử có thứ tự: các phần tử trong Set giữ nguyên thứ tự thêm vào, giúp dễ dàng duyệt qua theo thứ tự thêm vào.
  3. Hoạt động tối ưu hóa: Set cung cấp các phương thức tối ưu hóa để thêm, xóa và kiểm tra sự tồn tại của phần tử.

Ví dụ thực tế

Ví dụ sử dụng Map để lưu trữ thông tin về người dùng:

JavaScript
    
      const users = new Map();
      users.set(1, { name: 'Alice', age: 25 });
      users.set(2, { name: 'Bob', age: 30 });

      for (const [id, user] of users) {
        console.log(`User ID: ${id}, Name: ${user.name}, Age: ${user.age}`);
      }

      // User ID: 1, Name: Alice, Age: 25
      // User ID: 2, Name: Bob, Age: 30
    
  

Ví dụ sử dụng Set để lọc các giá trị duy nhất:

JavaScript
    
      const numbers = [1, 2, 3, 1, 2, 4, 5, 3];
      const uniqueNumbers = new Set(numbers);

      for (const number of uniqueNumbers) {
        console.log(number);
      }

      // 1
      // 2
      // 3
      // 4
      // 5
    
  
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION