我有一个带有复合键的 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;
}
换句话说:展平为一个数组并投影查询的结果。
编辑
如果您需要更高性能的方法,但稍微“凌乱”,您可以定义键,例如您将搜索的键的连接字符串。参考上一个例子:
var myObjects = {};
myObjects["1_9"] = 22;
myObjects["-1_0"] = 2;
所以要访问你写的:
var foundValues = fucntion(key1, key2) {
return myObjects[key1.toString() + "_" + key2.toString()];
}
快得多,但当您在一段时间后阅读代码时并不那么清楚。对于一些重计算密集型站点,我经常使用这种模式来尽可能提高在正确时刻挑选所需数据的性能。