Đối tượng javascript có phải là hàm băm không?

Bảng băm là một triển khai của một mảng kết hợp, một danh sách các cặp khóa-giá trị cho phép bạn truy xuất một giá trị thông qua một khóa. Bên trong, bảng băm sử dụng hàm băm để chuyển đổi giá trị khóa thành chỉ mục trỏ đến nơi lưu trữ giá trị trong bộ nhớ. Bảng băm có các thao tác tìm kiếm, chèn và xóa nhanh

Có hai cách chính để triển khai bảng băm/mảng kết hợp trong JavaScript

Sử dụng kiểu dữ liệu đối tượng

Cách triển khai đơn giản nhất là sử dụng kiểu dữ liệu

key is: key1, value is: value1

key is: key2, value is: value2

key is: key3, value is: value3

2. Điều này là do tất cả các đối tượng không vô hướng trong JavaScript hoạt động như các mảng kết hợp, ánh xạ từ khóa thuộc tính sang giá trị. Vì vậy, bản thân một

key is: key1, value is: value1

key is: key2, value is: value2

key is: key3, value is: value3

2 có thể hoạt động như một bảng băm cơ bản

var simplehash = new Object();

simplehash['key1'] = 'value1';

simplehash['key2'] = 'value2';

simplehash['key3'] = 'value3';

if (simplehash.hasOwnProperty(key)) {

console.log('key is: ' + key + ', value is: ' + simplehash[key]);

Đầu ra sẽ giống như

key is: key1, value is: value1

key is: key2, value is: value2

key is: key3, value is: value3

Có một số nhược điểm của phương pháp này

  • key is: key1, value is: value1

    key is: key2, value is: value2

    key is: key3, value is: value3

    2 đi kèm với các thuộc tính riêng của nó có thể xung đột với các tên khóa tiềm năng
  • Không có cách nào dễ dàng để lấy kích thước của Bảng băm được lưu trữ trong

    key is: key1, value is: value1

    key is: key2, value is: value2

    key is: key3, value is: value3

    2, vì vậy nó phải được theo dõi thủ công
  • Vì chúng cũng là tên thuộc tính, các khóa được sử dụng được giới hạn ở các loại

    key is: key1, value is: value1

    key is: key2, value is: value2

    key is: key3, value is: value3

    6 hoặc

    key is: key1, value is: value1

    key is: key2, value is: value2

    key is: key3, value is: value3

    7
  • key is: key1, value is: value1

    key is: key2, value is: value2

    key is: key3, value is: value3

    2 không được tối ưu hóa để thường xuyên thêm và xóa các cặp khóa-giá trị

Đối tượng

key is: key1, value is: value1

key is: key2, value is: value2

key is: key3, value is: value3

0 được tạo để triển khai loại mảng kết hợp này mà không có một số nhược điểm của việc sử dụng một

key is: key1, value is: value1

key is: key2, value is: value2

key is: key3, value is: value3

2 cơ bản

  • Không có chìa khóa tồn tại trước có thể dẫn đến va chạm
  • Đối tượng

    key is: key1, value is: value1

    key is: key2, value is: value2

    key is: key3, value is: value3

    0 có thuộc tính

    key is: key1, value is: value1

    key is: key2, value is: value2

    key is: key3, value is: value3

    3 để theo dõi nội dung của nó
  • Một đối tượng

    key is: key1, value is: value1

    key is: key2, value is: value2

    key is: key3, value is: value3

    0 có thể có các khóa là bất kỳ loại dữ liệu nào
  • Một

    key is: key1, value is: value1

    key is: key2, value is: value2

    key is: key3, value is: value3

    0 đã được tối ưu hóa để lặp lại việc thêm và chèn các cặp khóa-giá trị

Một đối tượng

key is: key1, value is: value1

key is: key2, value is: value2

key is: key3, value is: value3

0 cũng đi kèm với các phương thức sau

  • key is: key1, value is: value1

    key is: key2, value is: value2

    key is: key3, value is: value3

    7 Xóa tất cả các cặp khóa-giá trị khỏi đối tượng

    key is: key1, value is: value1

    key is: key2, value is: value2

    key is: key3, value is: value3

    0
  • key is: key1, value is: value1

    key is: key2, value is: value2

    key is: key3, value is: value3

    9 Xóa cặp khóa-giá trị và trả về

    key is: key1, value is: value1

    key is: key2, value is: value2

    key is: key3, value is: value3

    10 nếu khóa tồn tại. Trả về

    key is: key1, value is: value1

    key is: key2, value is: value2

    key is: key3, value is: value3

    11 nếu không
  • key is: key1, value is: value1

    key is: key2, value is: value2

    key is: key3, value is: value3

    12 Trả về giá trị được liên kết với khóa hoặc

    key is: key1, value is: value1

    key is: key2, value is: value2

    key is: key3, value is: value3

    13 nếu khóa không tồn tại
  • key is: key1, value is: value1

    key is: key2, value is: value2

    key is: key3, value is: value3

    14 Trả về

    key is: key1, value is: value1

    key is: key2, value is: value2

    key is: key3, value is: value3

    10 nếu khóa tồn tại, ngược lại là

    key is: key1, value is: value1

    key is: key2, value is: value2

    key is: key3, value is: value3

    11
  • key is: key1, value is: value1

    key is: key2, value is: value2

    key is: key3, value is: value3

    17 Đặt giá trị cho khóa trong đối tượng

    key is: key1, value is: value1

    key is: key2, value is: value2

    key is: key3, value is: value3

    0 và trả về đối tượng

    key is: key1, value is: value1

    key is: key2, value is: value2

    key is: key3, value is: value3

    0

Ghi chú. Các cặp khóa-giá trị phải được đặt bằng phương pháp

key is: key1, value is: value1

key is: key2, value is: value2

key is: key3, value is: value3

20 để đối tượng

key is: key1, value is: value1

key is: key2, value is: value2

key is: key3, value is: value3

0 hoạt động như mong đợi. Việc sử dụng cú pháp cho

key is: key1, value is: value1

key is: key2, value is: value2

key is: key3, value is: value3

2 ở trên sẽ có vẻ hiệu quả, nhưng sẽ không liên kết cặp khóa-giá trị với bộ sưu tập nội bộ của nó

Băm có giống như các đối tượng không?

Chúng tôi thường so sánh hàm băm trong Ruby với Đối tượng trong JavaScript. Mặc dù chúng có một số điểm tương đồng nhưng chức năng của cả hai không giống nhau . Điểm giống nhau xuất phát từ thực tế là hàm băm của Ruby và đối tượng của JavaScript có vẻ giống nhau.

Các đối tượng JavaScript có phải là bản đồ băm không?

Mặc dù JavaScript không có lớp Hashtable riêng, nhưng nó có các Đối tượng và Hashmap(Bản đồ) gốc cung cấp chức năng tương tự khi nó .

Băm trong JavaScript là gì?

Hàm băm trong Javascript là bất kỳ hàm nào nhận đầu vào dưới dạng dữ liệu có kích thước tùy ý và tạo ra đầu ra dưới dạng dữ liệu có kích thước cố định . Thông thường, giá trị trả về của hàm băm được gọi là mã băm, hàm băm hay giá trị băm.

Băm của một đối tượng là gì?

Đối tượng băm là một “bảng/tập dữ liệu” đã được lập chỉ mục khóa để truy cập và truy xuất nhanh hơn . Chỉ mục cho phép truy cập trực tiếp; . Trong trường hợp các khóa trùng lặp, đối tượng băm được xây dựng bằng cách sử dụng lần xuất hiện tuần tự đầu tiên của khóa trùng lặp.