私はPythonで簡単な例を持っています:
programs = {}
if not programs.has_key(( program, time )):
programs[( program, time )] = 0
programs[( program, time )] = programs[( program, time )] + 1
Javascript で配列をキーとして使用するには?
私はPythonで簡単な例を持っています:
programs = {}
if not programs.has_key(( program, time )):
programs[( program, time )] = 0
programs[( program, time )] = programs[( program, time )] + 1
Javascript で配列をキーとして使用するには?
これは「動作」します。(でもオススメはしません)
var a = {};
var b = [1,2,3];
a[b] = 'hello';
// a[b] evaluates to 'hello'
// a[[1,2,3]] evaluates to 'hello'
// a['1,2,3'] evaluates to 'hello'
配列 [1,2,3] をハッシュ (マップ/連想配列) キーとして渡すと、ハッシュ ルックアップを実行する前に文字列 '1,2,3' に変換されるため、機能します。異なるハッシュ値にマップするために同じ値の 2 つの異なる配列を必要としない限り、ニーズに合っているはずです。
var c = [1,2,3]
// a[c] evaluates to 'hello' even though we never executed a[c] = 'hello'
// but b == c evaluates to false
// b & c are two separate objects with the same values, so when they
// get converted to a string for hashing, they return the same value from the hash
前述のとおり、オブジェクト参照をキーとして使用する場合は、標準の JavaScript ハッシュ以上のものが必要になります。
@speedplane からのコメントに基づく:
toString()
配列をハッシュキーに渡すと、JSが配列を呼び出すのではないかと思います。したがって、実際にキーとして取得するものを簡単にテストできます。
["x", "y", "z"].toString(); // 'x,y,z'
["x,y,z"].toString(); // 'x,y,z'
[1,2,3].toString(); // '1,2,3'
[1,2,'3'].toString(); // '1,2,3'
[[1],[2],[3]].toString(); // '1,2,3'
[["x",1], ["y",2], ["z",3]].toString(); // 'x,1,y,2,z,3'
繰り返しますが、何が起こっているのかを本当に理解していない限り、これを行わないことをお勧めします。それでも、私はそれをしません。
JavaScriptキーは文字列です。
WeakMap
配列を他のオブジェクトにマップするには、、またはカスタムメソッドが必要です。
これでうまくいきますか?
<script>
var ary = {person1:'valerie', person2:'alex'};
for (key in ary) {
document.write(key, '<br>')
}
document.write(ary['person2'], '<br>')
</script>