Hướng dẫn javascript hash array - mảng băm javascript
Các bảng Hash là một cấu trúc dữ liệu cho phép bạn tạo một danh sách các giá trị được ghép nối. Sau đó, bạn có thể truy xuất một giá trị nhất định bằng cách sử dụng khóa cho giá trị đó mà bạn đặt vào bảng trước. Show
Nội phân Chính showShow
Bảng băm biến một phím thành một chỉ mục số nguyên bằng hàm băm và chỉ mục sẽ quyết định nơi lưu trữ cặp khóa/giá trị trong bộ nhớ: Bảng băm để lưu trữ danh bạ điện thoại (từ Wikipedia)Bạn sẽ thường sử dụng bảng băm vì các hoạt động tìm kiếm, chèn và xóa nhanh của nó:
Tìm kiếm O (1) Chèn Cách sử dụng các bảng băm với các lớp đối tượng và bản đồ trong JavaScriptXóa bỏ Nguồn từ Wikipedia Hướng dẫn này sẽ giúp bạn hiểu việc triển khai bảng băm trong JavaScript cũng như cách bạn có thể xây dựng lớp bảng băm của riêng mình.Đầu tiên, chúng ta hãy xem các lớp 5 và 6 của JavaScript.
Đối tượng JavaScript là một ví dụ về triển khai bảng bămNhưng loại 5 của JavaScript là một loại thực hiện bảng băm đặc biệt vì hai lý do:Nó có các thuộc tính được thêm bởi lớp 5. Các khóa của bạn nhập có thể xung đột và ghi đè các thuộc tính mặc định được kế thừa từ lớp.Kích thước của bảng băm không được theo dõi. Bạn cần đếm thủ công số lượng thuộc tính được định nghĩa bởi lập trình viên thay vì được thừa hưởng từ nguyên mẫu.Ví dụ: nguyên mẫu 5 có phương thức 5 cho phép bạn kiểm tra xem thuộc tính không được kế thừa: JavaScript đối tượng Phương thức kế thừa Ví dụ cuộc gọiJavaScript không chặn nỗ lực ghi đè lên phương thức 5, điều này có thể gây ra lỗi như thế này: Thuộc tính di truyền đối tượng JavaScript bị ghi đèĐể xử lý những thiếu sót này, JavaScript đã tạo ra một triển khai khác của cấu trúc dữ liệu bảng Hash được gọi là 6Giống như 5, 6 cho phép bạn lưu trữ các cặp giá trị khóa bên trong cấu trúc dữ liệu. Đây là một ví dụ về 6 trong hành động: JavaScript Lớp bản đồ là một triển khai khác của bảng bămKhông giống như loại 5, 6 yêu cầu bạn sử dụng các phương thức 3 và 4 để xác định và truy xuất bất kỳ giá trị cặp chính nào mà bạn muốn được thêm vào cấu trúc dữ liệu.Bạn cũng không thể ghi đè lên các thuộc tính được kế thừa 6. Ví dụ: mã sau đã cố gắng ghi đè giá trị thuộc tính 6 thành 7: Map Loại thuộc tính không thể ghi đèCách thực hiện cấu trúc dữ liệu bảng băm trong JavaScriptNhư bạn có thể thấy từ mã ở trên, bạn không thể thêm một mục nhập mới vào đối tượng 6 mà không cần sử dụng phương thức 3.Cấu trúc dữ liệu 6 cũng có thể lặp lại, có nghĩa là bạn có thể lặp lại dữ liệu như sau:
Bạn có thể triển khai bảng băm trong JavaScript trong ba bước: Tạo một lớp 3 với các thuộc tính ban đầu 4 và 6Thêm hàm 6 để chuyển đổi các phím thành các chỉ sốCách viết phương thức băm ()Thêm các phương thức 3 và 4 để thêm và truy xuất các cặp khóa/giá trị từ bảng.Được rồi, hãy bắt đầu với việc tạo lớp 3. Mã bên dưới sẽ tạo ra một thùng 4 với kích thước 1:
Nhưng vì lớp 3 chỉ có 127 thùng, điều này có nghĩa là phương thức 8 phải trả về một số giữa 9.Để đảm bảo rằng giá trị băm không vượt quá kích thước xô, bạn cần sử dụng toán tử modulo như được hiển thị bên dưới:
Bây giờ bạn đã hoàn thành phương thức 8, đã đến lúc viết các phương thức 3 và 4.Cách ghi phương thức SET ()Để đặt cặp khóa/giá trị trong bảng băm của bạn, bạn cần ghi một phương thức 3 chấp nhận & nbsp; ________ 74 làm tham số của nó:
Bây giờ phương thức 3 đã hoàn tất, hãy viết phương thức 4 để lấy một giá trị bằng khóa của nó.Cách viết phương thức get ()Để nhận được một giá trị nhất định từ bảng băm, bạn cần ghi một phương thức 4 chấp nhận giá trị 4 làm tham số của nó:
0Bằng cách này, phương thức 4 sẽ trả về cặp khóa/giá trị trở lại hoặc 0 khi không có cặp khóa/giá trị được lưu trữ trong 7 được chỉ định.Càng xa càng tốt. Hãy thêm một phương thức khác để xóa cặp khóa/giá trị khỏi bảng băm tiếp theo. Cách ghi phương thức Remove ()Để xóa một cặp khóa/giá trị khỏi bảng băm, bạn cần ghi một phương thức 2 chấp nhận giá trị 4 làm tham số của nó:
1Với điều đó, bây giờ bạn có một phương pháp 2 hoạt động. Hãy xem liệu lớp 3 có hoạt động đúng không.Cách kiểm tra việc thực hiện bảng bămĐã đến lúc kiểm tra việc thực hiện bảng băm. Đây là mã đầy đủ cho việc triển khai bảng băm một lần nữa: 2 Triển khai Hashtable trong JavaScriptĐể kiểm tra lớp 3, tôi sẽ tạo một thể hiện mới của 05 và đặt một số cặp khóa/giá trị như hình dưới đây. Các cặp khóa/giá trị dưới đây chỉ là các giá trị số tùy ý được ghép nối với tên quốc gia mà không có bất kỳ ý nghĩa đặc biệt nào: 3Testing set set () Phương thứcSau đó, chúng ta hãy cố gắng truy xuất chúng bằng phương pháp 4: 4Testing Hashtable Get () Phương thứcCuối cùng, chúng ta hãy cố gắng xóa một trong những giá trị này bằng phương thức 2: 5 Thử nghiệm Hashtable Remove () Phương thứcĐược rồi, tất cả các phương pháp đang hoạt động như mong đợi. Hãy thử một lần chèn khác với một thể hiện 3 mới và truy xuất các giá trị đó: 6Hash Chỉ số bảng va chạm & NBSP;Ối! Có vẻ như chúng tôi đã gặp một số rắc rối ở đây. 😨 Cách xử lý chỉ số va chạmĐôi khi, hàm băm trong bảng băm có thể trả về cùng số 7. Trong trường hợp thử nghiệm ở trên, chuỗi 10 và 11 đều trả về cùng một giá trị 12 vì số 13 là tổng của cả hai mã ASCII của chúng.both
return the same 12 value because the number 13 is the sum of both of their ASCII code.Giá trị 12 tương tự sẽ khiến chỉ số va chạm, ghi đè mục nhập trước đó với mục mới.Ngay bây giờ, dữ liệu được lưu trữ trong triển khai bảng băm của chúng tôi trông như sau: 7Để xử lý va chạm số 7, bạn cần lưu trữ cặp khóa/giá trị trong một mảng thứ hai để kết quả cuối cùng trông như sau: 8Để tạo mảng thứ hai, bạn cần cập nhật phương thức 3 để nó sẽ:
Mã phương thức 3 hoàn chỉnh sẽ như sau: 9Tiếp theo, cập nhật phương thức 4 để nó cũng sẽ kiểm tra mảng cấp hai bằng vòng lặp 27 và trả về cặp khóa/giá trị phù hợp: 0Cuối cùng, bạn cần cập nhật phương thức 2 để nó sẽ lặp qua mảng cấp hai và xóa mảng bằng giá trị 4 bên phải bằng phương thức 30: 1Với điều đó, lớp 3 của bạn sẽ có thể tránh được bất kỳ va chạm số chỉ mục nào và lưu trữ cặp khóa/giá trị bên trong mảng cấp hai.Như một phần thưởng, hãy thêm một phương thức 32 sẽ hiển thị tất cả các cặp khóa/giá trị được lưu trữ trong bảng băm. Bạn chỉ cần sử dụng phương thức 33 để lặp qua bảng và 34 Các giá trị cho một chuỗi như hình dưới đây: 2Đây là mã lớp 3 hoàn chỉnh một lần nữa với việc tránh va chạm được áp dụng cho tài liệu tham khảo của bạn:Triển khai lớp Hashtable ____23CompleteBạn có thể kiểm tra việc thực hiện bằng cách tạo một thể hiện 3 mới và thực hiện một số chèn và xóa: 4 Một bài kiểm tra hashtableBây giờ không có sự va chạm trong trường hợp 3. Công việc tuyệt vời!Sự kết luậnTrong hướng dẫn này, bạn đã học được bảng băm là gì và JavaScript sử dụng nó như thế nào để tạo cấu trúc dữ liệu 5 và 6.Bạn cũng đã học được cách thực hiện lớp 3 của riêng bạn cũng như cách ngăn các chỉ số chính của bảng Hash va chạm bằng cách sử dụng kỹ thuật chuỗi.Bằng cách sử dụng cấu trúc dữ liệu bảng băm, bạn sẽ có thể tạo một mảng kết hợp với các hoạt động tìm kiếm, chèn và xóa nhanh. 😉 Cảm ơn bạn đã đọc hướng dẫn nàyNếu bạn muốn tìm hiểu thêm về JavaScript, bạn có thể muốn xem trang web của tôi tại Sebhastian.com, nơi tôi đã xuất bản hơn 100 hướng dẫn về lập trình với JavaScript, tất cả đều sử dụng các giải thích dễ hiểu và ví dụ về mã. Các hướng dẫn bao gồm thao tác chuỗi, thao tác ngày, phương thức mảng và đối tượng, các giải pháp thuật toán JavaScript và nhiều hơn nữa. Học mã miễn phí. Chương trình giảng dạy nguồn mở của Freecodecamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu |