哪个javascript函数满足:f(x,y)= f(a,b)IFF x = a和y = b?

时间:2012-11-27 11:16:24

标签: javascript design-patterns tuples equality idioms

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

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

我最好的解决方案就像是

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

更一般地说:

  1. 选择分隔符字符串S(例如,
  2. 将每个参数转换为字符串
  3. 从每个此类字符串中删除所有出现的S
  4. 在所有字符串之间插入S(la return theStrings.join(S)
  5. 我对此解决方案的唯一抱怨是,它感觉非常icky。然而,这足以告诉我是否缺少某种语言习语,最佳实践或设计模式。

1 个答案:

答案 0 :(得分:0)

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

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

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