1

我有一个带有复合键的 C# 字典:

IDictionary<Tuple<int, int?>, MyObject> MyObjects

用 Javascript 表示这种数据结构的最佳方式是什么?

我希望能够访问我的对象,例如:

var obj = MyObjects[[3,2]];

或者

var obj = MyObjects[[3,null]];
4

1 回答 1

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()];     

}

快得多,但当您在一段时间后阅读代码时并不那么清楚。对于一些重计算密集型站点,我经常使用这种模式来尽可能提高在正确时刻挑选所需数据的性能。

于 2013-11-08T14:36:51.650 回答