그리고 uniq 값(기본키 primary key)이라는 게...
a=>1, a=>2 이렇게 a가 값을 2개 동시에 지시할 수는 없거든요.
그러면 기본키로 a,b를 사용한다면
a=>1, b=>1, c=>"a"
a=>1, b=>1, c=>"b"
이런 식으로 기본키 a,b가 값을 "a", "b" 이렇게 두 개를 지시해서도 안 되겠죠.
아무튼 uniq 함수를 사용하는 의미가 퇴색되지만 원하는 값을 얻으려면 이렇게 해야 할 것 같네요.
a, b 동시 비교
[{a:1,b:2,name:"A"}, {a:2,b:1,name:"B"}, {a:1,b:1,name:"C"}].uniq {|t|
[t[:a], t[:b]]}
a, b,c 동시 비교
[{a:1,b:2,name:"A"}, {a:2,b:1,name:"B"}, {a:1,b:1,name:"C"}].uniq {|t| t}
[{a:1,b:2,name:"A"}, {a:2,b:1,name:"B"}, {a:1,b:1,name:"C"}].uniq {|t|
[t[:a], t[:b], t[:c]]}
2012년 7월 29일 오후 1:31, paranoiase <paran...@gmail.com>님의 말:
이런 경우는 group_by 를 쓰면 편하겠네요.
[{a:1,b:2,name:"A"}, {a:2,b:1,name:"B"}, {a:1,b:1,name:"C"}].group_by
{ |e| e[:a] }.map { |_, v| v.sort_by { |e| e[:b] }.first[:name] }
--
cheers,
junegunn choi.