2012-11-27 1 views
0

나는 SlickGrid과 관련된 DataView의 groupBy 기능을 사용하고 있습니다. 한 쌍의 열로 그룹화하고 싶지만 groupBy는 단일 값으로 만 그룹화 할 수 있습니다. 그것은 평등에 관하여 등으로 동작하는 객체를 반환해야합니다 (AFAICT가 지원 방법 의도에) 어떤 javascript 함수 f가 만족 : f (x, y) = f (a, b) IFF x = a 및 y = b?

, 나는 DataView를에게 TUPLE이 질문의 제목에 f에 해당하는 기능 h(row) {return TUPLE(row.x, row.y)}를 전달하려는 그 주위를 얻으려면 그것은 TUPLE의 제 1 및 제 2 인자의 2 튜플 인 경우 : [다음 DataView를 것 그룹 h(row)에 의해 행]

내 최고의 솔루션은보다 일반적으로

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

같은 것이있다 :

  1. 구분 기호 문자열 S (예 : ,)는
  2. 는 이러한 각 문자열 모든 문자열 사이
  3. 삽입 S (라 return theStrings.join(S))에서 S의 모든 항목을 제거 문자열로 각 인수를 변환

이 솔루션에 대한 내 유일한 불만이다 엄청나게 기분이 좋았다. 그러나 여기에 와서 내가 어떤 종류의 언어 관용어, 모범 사례 또는 디자인 패턴을 놓치고 있는지 묻는 것만으로도 충분합니다.

+2

흠이 .replace (Y 의해 X) '이다 진짜? 저 꿈꾸고 있나요? –

+2

(1) 아니오, 이것은 의사 코드입니다. (2) 시험은 다음과 같습니다. 책을보고, 멀리보고, 뒤돌아보십시오. 같은 이미지가 보입니까? 그렇다면 깨어 있습니다. 그렇지 않다면, 당신은 꿈을 꾸고 있습니다. 그것은 sleep (8h) 호출 동안 뇌의 render_frame() 함수와 관련이 있습니다 ;-) –

+0

충분히 받아 들여야합니다. (당신은 _eight hours__ sleep !! lucky guy을 얻습니다.) –

답변

0

두 인수가 모두 숫자이거나 숫자로 변환 될 수있는 경우 페어링 기능을 사용할 수 있습니다.

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

더 참조 예 : http://en.wikipedia.org/wiki/Pairing_function

+0

깔끔한 링크, 고마워요. 내 질문을 표현하는 또 다른 방법은 js의 가장 일반적인 (숫자가 아닌) 페어링 기능입니다. –