ホームページ > ウェブフロントエンド > jsチュートリアル > js は、c#_javascript スキルに基づいてハッシュテーブルに似た単純な関数コードをシミュレートします

js は、c#_javascript スキルに基づいてハッシュテーブルに似た単純な関数コードをシミュレートします

WBOY
リリース: 2016-05-16 18:35:52
オリジナル
1093 人が閲覧しました

C# を使用している場合は、ハッシュテーブルまたは辞書を使用してキーに基づいて値を取得する限り、この関数を簡単に実装できます。実は少し工夫すれば、jsでもhashtableと同様の機能を実装することができます。以下にコードの貼り付けを中心に筆者の開発で使用した実装方法をまとめます。
1. 実装のアイデア: 主な目的は、プロトタイプの hasOwnProperty メソッドを使用して、オブジェクト内の項目を追加するか、削除するか、一致する項目を取り出すかなどを決定することです。 hasOwnProperty が配列値を走査するよりも賢く高速である理由は、少なくともコードの観点から見ると、複雑さが O(1) であるためです。
2. 実装コード

コードをコピーします コードは次のとおりです:

// js ハッシュ Table
function HashTable() {
this.ObjArr = {};
this.Count = 0;
//Add
this.Add = function(key, value) {
if (this.ObjArr.hasOwnProperty(key)) {
return false; // キーがすでに存在する場合は、
を追加しません。
else {
this.ObjArr[key] = value;
this.Count ;
return true
}
}
//アイテムが含まれているかどうか
this.Contains = function(key) {
return; this.ObjArr.hasOwnProperty (key);
}
//特定のアイテムの取得は、実際には this.ObjArr[key] と同等です
this.GetValue = function(key) {
if (this .Contains(key) ) {
return this.ObjArr[key];
}
else {
throw Error("ハッシュテーブルにキーが含まれていません: " //Script error
/ /return;
}
}
//Remove
this.Remove = function(key) {
if (this.Contains(key)) {
delete this.ObjArr [key];
this.Count--;
}
}
//Clear
this.Clear = function() {
this.ObjArr = { ; ; カウント = 0;
}
}



コードをコピーします。
コードは次のとおりです。 //Employeefunction(employeeid, userName) {
this.id = id; .userName = userName;
function test() {
var ht = new HashTable();
for (var i = 1; i tmpEmployee = newemployee(i, "Employee_" i);
ht.Add(i, tmpEmployee);
for (var i = 1; i alert(ht.GetValue(i).userName); //実際には ht.ObjArr[i].userName と同等
//alert(ht.ObjArr[i].userName) );
}
ht.Remove(1);
alert(ht.Contains(1)); //false
alert(ht.Contains(2)); >//alert( ht.GetValue(1)); //Exception
var result = ht.GetValue(2);
if (result != null) {
alert("従業員 ID:") result.id "; UserName:" result.userName);
}
ht.Add(2, "このキーはすでに存在します!") //追加は無効です
//ht.Clear() ; //Clear
alert(ht.Count);
}


新しいハッシュテーブル オブジェクトを作成するだけで、共通の関数を使用できます。とても簡単なことではありませんか?楽しめ。
概要: プロトタイプ チェーン (プロトタイプ チェーン) とスコープ チェーンは、js の 2 つのコア部分です。それらを学び理解することで、その特性をうまく利用することで多くの複雑な問題を簡単に解決でき、非常に柔軟で効率的な機能を簡単に実装できます。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート