41


21

私はJavaScriptでハッシュテーブルを使用しています、そして私はハッシュテーブルで以下の値を示したいです。

1  -  [1,10,5] 2  -  [2] 3  -  [3、30、300など]

私は以下のコードを見つけました。 以下のデータに対して有効です。

1  -  [1] 2  -  [2] 3  -  [3]

ハッシュテーブルに1 - [1,2]の値を割り当てるにはどうすればよいですか。

関数Hash(){this.length = 0; this.items = new Array(); for(var i = 0; i <arguments.length; i = 2){if(typeof(arguments [i 1])!= '未定義'){this.items [arguments [i]] = arguments [i 1] ; this.length; }}

this.removeItem = function(in_key){var tmp_value;} if(typeof(this.items [in_key])!= '未定義'){this.length--; var tmp_value = this.items [in_key]; this.items [in_key]を削除してください。 tmp_valueを返します。 }

this.getItem = function(in_key){return this.items [in_key]; }

this.setItem = function(in_key、in_value){if(typeof(in_value)!= '未定義'){if(typeof(this.items [in_key])== '未定義'){this.length; }

this.items [in_key] = in_value; in_valueを返します。 }

this.hasItem = function(in_key){return typeof(this.items [in_key])!= '未定義'; }}

var myHash = new Hash( '1'、1、 'two'、2、 'three'、3);

(myHash.itemsのvar i){alert( 'キーは' i '、値は' myHash.items [i]); }

どうすればいいのですか?

4 Answer


74


上記の機能を使用して、あなたはするでしょう:

var myHash = new Hash('one',[1,10,5],'two', [2], 'three',[3,30,300]);

もちろん、以下もうまくいきます。

var myHash = {}; // New object
myHash['one'] = [1,10,5];
myHash['two'] = [2];
myHash['three'] = [3, 30, 300];

JavaScriptのオブジェクトはすべてハッシュテーブルなので ただし、foreach(オブジェクト内のvar item)を使用してもそのすべての機能などが得られるため、繰り返すのは難しくなりますが、ニーズによってはそれで十分な場合もあります。


32


ルックアップテーブルにいくつかの静的な値を格納するだけでよい場合は、https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Values、variables、 and_literals#Object_literals []を使用できます。それをコンパクトにするためのObject Literal]( JSONによって使用されているのと同じフォーマット):

var table = {1:[1,10,5]、2:[2]、3:[3、30、300]}

そして、JavaScriptの連想配列構文を使ってそれらにアクセスします。

alert(table ['one']); // [1,10,5] alert(table ['one'] [1])で警告します。 // 10で警告します


8


あなたは私のJavaScriptハッシュテーブル実装、 jshashtableを使うことができます。 文字列だけでなく、あらゆるオブジェクトをキーとして使用することができます。


2


Javascriptインタプリタはオブジェクトをハッシュテーブルにネイティブに格納します。 プロトタイプチェーンからの汚染が心配な場合は、いつでも次のようなことができます。

// Simple ECMA5 hash table
Hash = function(oSource){(oSource内のsKey)の場合if(Object.prototype.hasOwnProperty.call(oSource、sKey))this [sKey] = oSource [sKey]; ; Hash.prototype = Object.create(null);

var oHash = new Hash({foo: 'bar'}); oHash.foo === 'bar'; // true oHash ['foo'] === 'bar'; // true oHash ['meow'] = 'another prop'; // true oHash.hasOwnProperty ===未定義。 // true Object.keys(oHash); // ['foo'、 'meow'] oHash instanceof Hash; //真