私はhash tableがJavascriptで必要です。つまり、キー(文字列)を値にマッピングする連想配列を実装する必要があります(私の場合、これらは複数の整数配列です)。私は、この種のアプローチは、一般的に使用されていないか、または少なくとも私はまだウェブ上でそれを発見していないことに気づい:Javascriptでハッシュテーブルを使用する:適切な配列の配列ですか?
おそらくvar hash = ['s0'];
for (var i = 5; i >= 1; i--) {
var r = Math.floor(Math.random() * 3);
hash['s'+i] = [r, r*2, r^2];
}
console.log(hash);
hash.forEach(function (v, i, a) {
document.getElementById('foreach').innerHTML += i + ' => ' + v + '<br>';
})
for (var i = 5; i >= 1; i--) {
var key = 's'+i;
document.getElementById('for').innerHTML += key + ' => [' + hash[key].toString() + ']<br>';
}
<p id="foreach">forEach (val,index):<br/></p>
<p id="for">for:<br/></p>
宣言された配列は、ように見えるという事実によるもの新しい値を追加した後(コンソールを開いて+
ボタンをクリックすると、[s1]
と表示されても値が表示されます)、正しくマップされません。 forEach
は、配列には1つの値しかないと仮定していますが、それらのキーのいずれかに直接アクセスするとします。 hash['s3']
、それぞれの配列が返されます。
したがって、私は何か間違っていますか?私はこのアプローチを使うべきですか?
JSON内のオブジェクトは、このような場合のために、より適切である場合は、シンプルで、上記の例に似た何かを実装するための最良の方法は何ですか?
さらに、key_string
がキーとして必要な文字列の場合は、「仮パラメータ」ではないため、hash.push(key_string: val_array)
が失敗します。しかし、次のようなことを行うことによって:
hash.push({'key':key_string,'value':val_array})
これらの配列のうちの1つを、関連するキーを使ってできるだけ簡単にアクセスできますか?
オブジェクトのプロパティは、ハッシュテーブルと同じか、連想配列についての行動はJavaScript、 javascriptでハッシュテーブルを実装することは、あなたが解決しようとしている問題を解決するための間違った方法か、宿題に関する質問です。 – chiliNUT
var hash = ['s0']をvar hash = {'s0': 'first_element'}に変更します。それは何を参照してください –
ありがとう@chiliNUT、しかし、オブジェクトのプロパティが "ハッシュテーブルと同じように動作する"場合は、 "宿題の質問"でこれは "些細な質問"と言っている場合は、親切にハッシュテーブルの問題?私は上記と似たコードを使用していますが、私の目的のために動作しますが、 'forEach'を使用できないのは便利なことではありません... – CPHPython