0

我正在使用SlickGrid和相关的 DataView 的 groupBy 功能。我想按一对列分组,但 groupBy 只允许按单个值分组。

为了解决这个问题(以 AFAICT 支持和预期的方式),我想向 DataView 传递一个函数h(row) {return TUPLE(row.x, row.y)},其中TUPLE对应f于这个问题的标题:它应该返回一个对象,该对象的行为与平等有关,就好像它是一个二元组ofTUPLE的第一个和第二个参数:[然后 DataView 将按h(row)]对行进行分组

我最好的解决方案是

x.toString().replace("," by "") + "," + y.toString().replace("," by "")

更普遍:

  1. 选择一个分隔符字符串 S(例如,
  2. 将每个参数转换为字符串
  3. 从每个这样的字符串中删除所有出现的 S
  4. 在所有字符串之间插入 S (a la return theStrings.join(S))

我对这个解决方案的唯一抱怨是它感觉非常恶心。然而,这足以来这里询问我是否缺少某种语言习语、最佳实践或设计模式。

4

1 回答 1

0

如果两个参数都是数字(或可以转换为数字),则可以使用配对函数。

f(x, y) = (x + y) * (x + y + 1) / 2 + y

查看更多:http ://en.wikipedia.org/wiki/Pairing_function

于 2012-11-27T11:30:22.750 回答