我有一个带有复合键的C#字典:
IDictionary<Tuple<int, int?>, MyObject> MyObjects
在Javascript中表示此数据结构的最佳方法是什么?
我希望能够访问我的对象,如:
var obj = MyObjects[[3,2]];
或
var obj = MyObjects[[3,null]];
答案 0 :(得分:2)
可能类似
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;
}
换句话说:展平成一个数组并从查询中投射结果。
编辑
如果你需要更高性能的方法,但稍微更“混乱”,你可以定义像 连接要搜索的键的字符串。参考上一个例子:
var myObjects = {};
myObjects["1_9"] = 22;
myObjects["-1_0"] = 2;
所以要访问你写的:
var foundValues = fucntion(key1, key2) {
return myObjects[key1.toString() + "_" + key2.toString()];
}
更快,但在一段时间后阅读代码时不太清楚。 对于一些繁重的计算密集型站点,我经常使用这种模式来提升我在正确的时刻选择所需数据的性能。