teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

削除

2018/02/08 13:21

投稿

katoy
katoy

スコア22328

answer CHANGED
@@ -1,33 +1,1 @@
1
- こんな方法はいかがでしょう?
2
-
3
- hhh.rb
4
- ```ruby
5
- def normalize ary_of_hash
6
- ary_of_hash.map(&:to_a).sort.map(&:to_h)
7
- end
8
-
9
- hash1 = [{"a"=> 1,"b"=> 1},{"a"=> 2,"b"=> 2}]
10
- hash2 = [{"a"=> 2,"b"=> 2},{"a"=> 1,"b"=> 1}]
11
- hash3 = [{"a"=> 1,"b"=> 3},{"a"=> 2,"b"=> 2}]
12
- hash4 = [{"a"=> 1,"b"=> 1},{"a"=> 2,"b"=> 2},{"a"=> 3,"b"=> 3} ]
13
-
14
- p normalize(hash1)
1
+ 通信エラー2重投稿にあったので、削除
15
- p normalize(hash2)
16
- p normalize(hash3)
17
- p normalize(hash4)
18
- puts
19
-
20
- p normalize(hash1) == normalize(hash2)
21
- p normalize(hash1) == normalize(hash3)
22
- p normalize(hash2) == normalize(hash3)
23
- p normalize(hash1) == normalize(hash4)
24
- p normalize(hash2) == normalize(hash4)
25
-
26
- ```
27
-
28
- 実行結果
29
-
30
- ![![イメージ説明](3e1f87f535bdf01afd8b4f35497a8588.png)](ca40667bba865daa2ae8a065bd3ab370.png)
31
-
32
- hash を配列に変換し、それをソートしてから、ハッシュに戻すことで、ハッシュのキーの順番で並びかえています。後は単純に比較をするだけです。
33
- == だけでなく < や > での大小比較も可能です。