2012-11-27 152 views
0

我使用SlickGrid和相關的DataView的groupBy功能。我想通過一對列進行分組,但groupBy只允許按單個值進行分組。哪些javascript函數滿足:f(x,y)= f(a,b)IFF x = a和y = b?

要解決這個問題(在AFAICT支持和預期的方式),我想通過數據視圖功能h(row) {return TUPLE(row.x, row.y)},其中TUPLE對應於這個問題的標題f:它應該返回其相對於平等的表現對象如果它是TUPLE的第一和第二參數的一個二元組:[然後數據視圖將組由h(row)行]

我的最好的解決方法是一樣的東西

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

更一般地:

  1. 選擇分隔符串S(例如, ,
  2. 轉換每個參數爲字符串
  3. 從每個這樣的字符串
  4. 所有的字符串之間插入S(一拉return theStrings.join(S))刪除S的所有出現

我對這個解決方案唯一的抱怨是它感覺非常噁心。然而,這足以來到這裏,問我是否缺少某種語言習語,最佳做法或設計模式。

+2

嗯,是'.replace(X由Y)真的嗎?我在做夢嗎? –

+2

(1)不,這是僞代碼; (2)這裏有一個測試:看書,看看,回頭看;你看到相同的圖像嗎?如果是,你醒了;如果不是,你在做夢。它在睡眠(8小時)呼叫期間與大腦的render_frame()函數有關;-) –

+0

足夠好我會接受它(你會得到_eight hours'_ sleep ?!幸運的人) –

回答

0

如果兩個參數都是數字(或可以轉換爲數字),則可以使用配對函數。

F(X,Y)=(X + Y)*(X + Y + 1)/ 2 + Y

詳見:http://en.wikipedia.org/wiki/Pairing_function

+0

整潔的鏈接,謝謝。表達我的問題的另一種方法是:我的黑客是js中最好的通用(非數字)配對函數嗎? –

相關問題