複合キーを持つ C# 辞書があります。
IDictionary<Tuple<int, int?>, MyObject> MyObjects
このデータ構造を Javascript で表現する最良の方法は何ですか?
次のようなオブジェクトにアクセスできるようにしたいと思います。
var obj = MyObjects[[3,2]];
また
var obj = MyObjects[[3,null]];
複合キーを持つ C# 辞書があります。
IDictionary<Tuple<int, int?>, MyObject> MyObjects
このデータ構造を Javascript で表現する最良の方法は何ですか?
次のようなオブジェクトにアクセスできるようにしたいと思います。
var obj = MyObjects[[3,2]];
また
var obj = MyObjects[[3,null]];
のようなものかもしれません
var myObjects = [];
myObjects.push({key1:1, key2: 9, value: 22});
myObjects.push({key1:-1, key2: 0, value: 2});
...
そして、通常のクエリの後
var foundValues = function(key1, key2) {
var filteredArray = array.filter(function (element) {
return element.key1=== key1 && element.key2 === key2;
});
return filteredArray;
}
つまり、1 つの配列にフラット化し、クエリの結果を射影します。
編集
よりパフォーマンスの高いアプローチが必要であるが、少し「面倒」な場合は、検索するキーの連結文字列のようなキーを定義できます。前の例を参照:
var myObjects = {};
myObjects["1_9"] = 22;
myObjects["-1_0"] = 2;
アクセスするには、次のように記述します。
var foundValues = fucntion(key1, key2) {
return myObjects[key1.toString() + "_" + key2.toString()];
}
はるかに高速ですが、しばらくしてコードを読むとそれほど明確ではありません。計算負荷の高いサイトでは、このパターンを頻繁に使用して、必要なデータを適切なタイミングで選択するパフォーマンスを可能な限り向上させます。