回答編集履歴

7

修正

2017/08/06 05:55

投稿

退会済みユーザー
test CHANGED
@@ -1,3 +1,33 @@
1
+ ```Ruby
2
+
3
+ # encoding: utf-8
4
+
5
+
6
+
7
+ arr = [[1, 'aiu'], [2, 'aaa'], [3, 'ueo']]
8
+
9
+
10
+
11
+ def sort_test(arr, key)
12
+
13
+ a = Array.new(2).map{ [] }
14
+
15
+ arr.each { |e| (key == e[0] ? a[0] : a[1]) << e }
16
+
17
+ a[0].concat(a[1])
18
+
19
+ end
20
+
21
+
22
+
23
+ p sort_test(arr, 2)
24
+
25
+ # => [[2, "aaa"], [1, "aiu"], [3, "ueo"]]
26
+
27
+
28
+
29
+ ```
30
+
1
31
  ```Ruby
2
32
 
3
33
  # encoding: utf-8

6

修正

2017/08/06 05:55

投稿

退会済みユーザー
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- arr = [[3, 'ueo'], [2, 'aaa'], [1, 'aiu']]
7
+ arr = [[1, 'aiu'], [2, 'aaa'], [3, 'ueo']]
8
8
 
9
9
 
10
10
 
@@ -22,7 +22,7 @@
22
22
 
23
23
  end
24
24
 
25
- a[0].sort.concat(a[1].sort)
25
+ a[0].concat(a[1])
26
26
 
27
27
  end
28
28
 
@@ -46,8 +46,8 @@
46
46
 
47
47
  とんちんかんなことを言っていたらすみません。
48
48
 
49
- 優先的にsortしたい要素を取り出して
49
+ 優先的にsortしたい要素とそれ以外別々の配列に
50
50
 
51
- それ以外をsort、その後、取り出たものに
51
+ して優先的にsortし配列それ以外の配列
52
52
 
53
- sortした結果入れて返すという方法はどうでしょうか。
53
+ くっつけて返すという方法はどうでしょうか。

5

修正

2017/08/06 05:51

投稿

退会済みユーザー
test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  end
24
24
 
25
- a[0].concat(a[1].sort)
25
+ a[0].sort.concat(a[1].sort)
26
26
 
27
27
  end
28
28
 

4

修正

2017/08/06 05:45

投稿

退会済みユーザー
test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  end
24
24
 
25
- a[0].sort.concat(a[1].sort)
25
+ a[0].concat(a[1].sort)
26
26
 
27
27
  end
28
28
 

3

修正

2017/08/06 05:43

投稿

退会済みユーザー
test CHANGED
@@ -14,25 +14,15 @@
14
14
 
15
15
  key.flatten! if keys.is_a?(Array)
16
16
 
17
- a = []
17
+ a = Array.new(2).map{ [] }
18
-
19
- b = []
20
18
 
21
19
  arr.each do |e|
22
20
 
23
- if key.include?(e[0])
21
+ (key.include?(e[0]) ? a[0] : a[1]) << e
24
-
25
- a << e
26
-
27
- else
28
-
29
- b << e
30
-
31
- end
32
22
 
33
23
  end
34
24
 
35
- a.sort.concat(b.sort)
25
+ a[0].sort.concat(a[1].sort)
36
26
 
37
27
  end
38
28
 

2

修正

2017/08/06 05:11

投稿

退会済みユーザー
test CHANGED
@@ -8,7 +8,11 @@
8
8
 
9
9
 
10
10
 
11
- def sort_test(arr, key)
11
+ def sort_test(arr, keys)
12
+
13
+ key = [keys]
14
+
15
+ key.flatten! if keys.is_a?(Array)
12
16
 
13
17
  a = []
14
18
 
@@ -16,7 +20,7 @@
16
20
 
17
21
  arr.each do |e|
18
22
 
19
- if e[0] == key
23
+ if key.include?(e[0])
20
24
 
21
25
  a << e
22
26
 
@@ -28,7 +32,7 @@
28
32
 
29
33
  end
30
34
 
31
- a.concat(b.sort)
35
+ a.sort.concat(b.sort)
32
36
 
33
37
  end
34
38
 
@@ -37,6 +41,12 @@
37
41
  p sort_test(arr, 2)
38
42
 
39
43
  # => [[2, "aaa"], [1, "aiu"], [3, "ueo"]]
44
+
45
+
46
+
47
+ p sort_test(arr, [2, 3])
48
+
49
+ # => [[2, "aaa"], [3, "ueo"], [1, "aiu"]]
40
50
 
41
51
 
42
52
 

1

修正

2017/08/06 05:06

投稿

退会済みユーザー
test CHANGED
@@ -44,6 +44,8 @@
44
44
 
45
45
  私はRuby初心者でRailsの事情は分かりません。
46
46
 
47
+ とんちんかんなことを言っていたらすみません。
48
+
47
49
  優先的にsortしたい要素を取り出して
48
50
 
49
51
  それ以外をsort、その後、取り出していたものに