>  기사  >  웹 프론트엔드  >  HashTable(해시 테이블)의 js 구현 분석 예

HashTable(해시 테이블)의 js 구현 분석 예

高洛峰
高洛峰원래의
2016-12-06 11:03:231025검색

1. 자바스크립트 해시 테이블 소개

자바스크립트에는 해시 테이블이 없습니다. 자바나 C#에서는 이런 자료 구조가 가끔 사용됩니다. 불편한. . 자세히 살펴보면 JavaScript 개체의 속성이 실제로 해시 테이블과 매우 유사하다는 것을 알 수 있습니다.

예:

var person = {};
person["name"] = "关羽";

간소화된 버전의 해시 테이블을 얻으려면 이를 기반으로 일부 HashTable 기능을 캡슐화하면 됩니다.

다음과 같이 함수를 추가합니다.

HashTable(해시 테이블)의 js 구현 분석 예

2. 코드 구현

구체적인 구현은 코드를 확인할 수 있지만 그렇지 않습니다. 매우 복잡합니다.

function HashTable() {
 var size = 0;
 var entry = new Object();
 this.add = function (key, value) {
 if (!this.containsKey(key)) {
 size++;
 }
 entry[key] = value;
 }
 this.getValue = function (key) {
 return this.containsKey(key) ? entry[key] : null;
 }
 this.remove = function (key) {
 if (this.containsKey(key) && (delete entry[key])) {
 size--;
 }
 }
 this.containsKey = function (key) {
 return (key in entry);
 }
 this.containsValue = function (value) {
 for (var prop in entry) {
 if (entry[prop] == value) {
 return true;
 }
 }
 return false;
 }
 this.getValues = function () {
 var values = new Array();
 for (var prop in entry) {
 values.push(entry[prop]);
 }
 return values;
 }
 this.getKeys = function () {
 var keys = new Array();
 for (var prop in entry) {
 keys.push(prop);
 }
 return keys;
 }
 this.getSize = function () {
 return size;
 }
 this.clear = function () {
 size = 0;
 entry = new Object();
 }
}

간단한 사용 예:

var manHT = new HashTable();
manHT.add("p1","刘备");
manHT.add("p2","关羽");
$("#div1").text(manHT.getValue("p1"));


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.