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;
}
}
コードをコピーします。
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 つのコア部分です。それらを学び理解することで、その特性をうまく利用することで多くの複雑な問題を簡単に解決でき、非常に柔軟で効率的な機能を簡単に実装できます。