回答編集履歴

10

テキスト修正

2020/02/22 02:25

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -11,10 +11,6 @@
11
11
 
12
12
 
13
13
  ```
14
-
15
- $ node -v
16
-
17
- v12.7.0
18
14
 
19
15
  $ node
20
16
 
@@ -38,13 +34,29 @@
38
34
 
39
35
  - **(2)** sort に与える関数の返す値として、`1`の替わりに正の数、`-1` の替わりに負の数を返させる。
40
36
 
37
+   
41
38
 
42
-
43
-   
39
+  
44
40
 
45
41
 
46
42
 
43
+ 以下、具体的なコードで回答します。
44
+
45
+ 配列`list` の元になる、ソート対象の配列は、ご質問に挙げられているコードでは
46
+
47
+ ```javascript
48
+
49
+ var list = testSort([["aaa",10],["bbb",20],["ccc",""],["ddd",30],["eee",40]]);
50
+
51
+ ```
52
+
53
+ ```javascript
54
+
55
+ var list = testSort([["aaa",100],["bbb",10],["ccc",""],["ddd",30],["eee",40]]);
56
+
57
+ ```
58
+
47
- 具体的にはもし、`list` の各要素である配列の2番目の要素の値が、空文字列以外は正の数という前提であれば、比較関数は、上記 **(1)**と**(2) **を両方使って、以下で事足りるものになります。
59
+ となっていますが上記ように各要素である長さ2の配列の2番目の要素が、空文字列以外は正の数であるということを前提にしてよいのであれば、`sort`に与える比較関数は、冒頭の**(1)**と**(2) **を両方使って、以下で事足ります。
48
60
 
49
61
 
50
62
 
@@ -58,7 +70,7 @@
58
70
 
59
71
  ```
60
72
 
61
- または、アロー関数を使えば以下のようにも書けます。
73
+ 上記は、アロー関数を使えば以下のようにも書けます。
62
74
 
63
75
  ```javascript
64
76
 
@@ -74,7 +86,7 @@
74
86
 
75
87
 
76
88
 
77
- `list` の各要素の配列の2番目の値が 0および負の数も含むことがあり、その場合も空文字列を含む配列は最後になるようにソートしたいのであれば、 `b[1] - a[1]` を返す前に、いずれかが空文字列だった場合の `if` 文を追加して、以下のようにします。この場合は、冒頭の**(2) **のみを使うということになります。
89
+ ソート対象配列において、各要素の配列の2番目の値が0および負の数も含むことがあり、その場合も空文字列を含む配列は最後になるようにソートしたいのであれば、 `b[1] - a[1]` を返す前に、いずれかが空文字列だった場合の `if` 文を追加して、以下のようにします。この場合は、冒頭の**(2) **のみを使うということになります。
78
90
 
79
91
 
80
92
 
@@ -92,7 +104,7 @@
92
104
 
93
105
  ```
94
106
 
95
- または、アロー関数と入れ子の三項演算子を使って以下のようにも書けます。
107
+ 上記は、アロー関数と入れ子の三項演算子を使って以下のようにも書けます。
96
108
 
97
109
 
98
110
 
@@ -106,4 +118,4 @@
106
118
 
107
119
 
108
120
 
109
- ただし、上記のコードのように三項演算子を入れ子にするのは、([ESLintにこれを警告させるように設定](https://eslint.org/docs/rules/no-nested-ternary)できるように、)読みにくいコードになりがちなので、業務など他の人も読むコードを書くときには使わないほうがよいかもしれません。
121
+ ただし、上記のコードのように三項演算子を入れ子にするのは、([ESLintにこれを警告させるように設定](https://eslint.org/docs/rules/no-nested-ternary)できるように、)読みにくいコードになりがちなので、業務では使わないほうがよいかもしれません。

9

テキスト修正

2020/02/22 02:25

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -36,17 +36,15 @@
36
36
 
37
37
 
38
38
 
39
- - **(2)** sort に与える関数の返す値として、`1`の替わりに正の数、`-1` の替わりに負の数を返させるようにしてもよい
39
+ - **(2)** sort に与える関数の返す値として、`1`の替わりに正の数、`-1` の替わりに負の数を返させる。
40
40
 
41
41
 
42
42
 
43
+   
43
44
 
44
45
 
45
46
 
46
-
47
-
48
-
49
- 具体的には、もし、`list` の各要素である配列の2番目の要素の値が、空文字列以外は正の数という前提であれば、比較関数は、上記の **(1)**と**(2) **を両方使って、以下でよいかと思います。
47
+ 具体的には、もし、`list` の各要素である配列の2番目の要素の値が、空文字列以外は正の数という前提であれば、比較関数は、上記の **(1)**と**(2) **を両方使って、以下で事足りるものになります。
50
48
 
51
49
 
52
50
 

8

テキスト修正

2020/02/22 01:44

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -76,7 +76,7 @@
76
76
 
77
77
 
78
78
 
79
- `list` の各要素の配列の2番目の値が 0および負の数も含むことがあり、その場合も空文字列を含む配列は最後になるようにソートしたいのであれば、以下のように `b[1] - a[1]` を返す前に、いずれかが空文字列だった場合の `if` 文を追加します。この場合は、冒頭の**(2) **のみを使うということになります。
79
+ `list` の各要素の配列の2番目の値が 0および負の数も含むことがあり、その場合も空文字列を含む配列は最後になるようにソートしたいのであれば、 `b[1] - a[1]` を返す前に、いずれかが空文字列だった場合の `if` 文を追加して、以下のようにします。この場合は、冒頭の**(2) **のみを使うということになります。
80
80
 
81
81
 
82
82
 

7

テキスト修正

2020/02/21 14:30

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- - (1) 引き算の対象に空文字列があると、`0` として扱われる。(以下、参照)
9
+ - **(1)** 引き算の対象に空文字列があると、`0` として扱われる。(以下、参照)
10
10
 
11
11
 
12
12
 
@@ -36,7 +36,7 @@
36
36
 
37
37
 
38
38
 
39
- - (2) sort に与える関数の返す値として、`1`の替わりに正の数、`-1` の替わりに負の数を返させるようにしてもよい。
39
+ - **(2)** sort に与える関数の返す値として、`1`の替わりに正の数、`-1` の替わりに負の数を返させるようにしてもよい。
40
40
 
41
41
 
42
42
 
@@ -46,7 +46,7 @@
46
46
 
47
47
 
48
48
 
49
- 具体的には、もし、`list` の各要素である配列の2番目の要素の値が、空文字列以外は正の数という前提であれば、比較関数は以下でよいかと思います。
49
+ 具体的には、もし、`list` の各要素である配列の2番目の要素の値が、空文字列以外は正の数という前提であれば、比較関数は、上記の **(1)**と**(2) **を両方使って、以下でよいかと思います。
50
50
 
51
51
 
52
52
 
@@ -60,7 +60,7 @@
60
60
 
61
61
  ```
62
62
 
63
- または、アロー関数を使えば
63
+ または、アロー関数を使えば、以下のようにも書けます。
64
64
 
65
65
  ```javascript
66
66
 
@@ -76,7 +76,7 @@
76
76
 
77
77
 
78
78
 
79
- `list` の各要素の配列の2番目の値が 0および負の数も含むことがあり、その場合も空文字列を含む配列は最後になるようにソートしたいのであれば、以下のように `b[1] - a[1]` を返す前に、いずれかが空文字列だった場合の `if` 文を追加します。
79
+ `list` の各要素の配列の2番目の値が 0および負の数も含むことがあり、その場合も空文字列を含む配列は最後になるようにソートしたいのであれば、以下のように `b[1] - a[1]` を返す前に、いずれかが空文字列だった場合の `if` 文を追加します。この場合は、冒頭の**(2) **のみを使うということになります。
80
80
 
81
81
 
82
82
 

6

テキスト修正

2020/02/21 14:01

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -94,7 +94,7 @@
94
94
 
95
95
  ```
96
96
 
97
- または、以下のようにも書けます。
97
+ または、アロー関数と、入れ子の三項演算子を使って以下のようにも書けます。
98
98
 
99
99
 
100
100
 

5

テキスト修正

2020/02/21 06:46

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -108,4 +108,4 @@
108
108
 
109
109
 
110
110
 
111
- ただし、上記のコードのように三項演算子を入れ子にするのは、[ESLintにこれを警告させるように設定](https://eslint.org/docs/rules/no-nested-ternary) できるように、読みにくいコードになりがちなので、業務などで他の人も読むコードを書くときには使わないほうがよいかもしれません。
111
+ ただし、上記のコードのように三項演算子を入れ子にするのは、([ESLintにこれを警告させるように設定](https://eslint.org/docs/rules/no-nested-ternary)できるように、)読みにくいコードになりがちなので、業務などで他の人も読むコードを書くときには使わないほうがよいかもしれません。

4

テキスト修正

2020/02/21 04:21

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -108,4 +108,4 @@
108
108
 
109
109
 
110
110
 
111
- 余談ですが、上記のコードのように三項演算子を入れ子にするのは、[ESLintにこれを警告させるように設定](https://eslint.org/docs/rules/no-nested-ternary) できるように、読みにくいコードになりがちなので、業務などで他の人も読むコードを書くときには使わないほうがよいかもしれません。
111
+ ただし、上記のコードのように三項演算子を入れ子にするのは、[ESLintにこれを警告させるように設定](https://eslint.org/docs/rules/no-nested-ternary) できるように、読みにくいコードになりがちなので、業務などで他の人も読むコードを書くときには使わないほうがよいかもしれません。

3

テキスト修正

2020/02/21 03:16

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -96,6 +96,8 @@
96
96
 
97
97
  または、以下のようにも書けます。
98
98
 
99
+
100
+
99
101
  ```javascript
100
102
 
101
103
  (a, b) => a[1] === "" ? 1 : (b[1] === "" ? -1 : b[1] - a[1])
@@ -103,3 +105,7 @@
103
105
  ```
104
106
 
105
107
  - **動作確認用CodePen:** [https://codepen.io/jun68ykt/pen/YzXGoNW?editors=0012](https://codepen.io/jun68ykt/pen/YzXGoNW?editors=0012)
108
+
109
+
110
+
111
+ 余談ですが、上記のコードのように三項演算子を入れ子にするのは、[ESLintにこれを警告させるように設定](https://eslint.org/docs/rules/no-nested-ternary) できるように、読みにくいコードになりがちなので、業務などで他の人も読むコードを書くときには使わないほうがよいかもしれません。

2

テキスト修正

2020/02/21 03:13

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -76,7 +76,7 @@
76
76
 
77
77
 
78
78
 
79
- `list` の各要素の配列の2番目の値が、 `0`および負の数も含むことがあり、その場合も空文字列を含む配列は最後になるようにソートしたいのであれば、以下のように `b[1] - a[1]` を返す前に、いずれかが空文字列だった場合の `if` 文を追加します。
79
+ `list` の各要素の配列の2番目の値が、 0および負の数も含むことがあり、その場合も空文字列を含む配列は最後になるようにソートしたいのであれば、以下のように `b[1] - a[1]` を返す前に、いずれかが空文字列だった場合の `if` 文を追加します。
80
80
 
81
81
 
82
82
 

1

テキスト修正

2020/02/21 02:53

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- ご質問に挙げられているコードを改善する際には、以下の (1)、(2) の2点
5
+ ご質問に挙げられているコードを改善する際には、以下の (1)、(2) の2点を使うとよいかと思います。
6
6
 
7
7
 
8
8
 
@@ -40,7 +40,7 @@
40
40
 
41
41
 
42
42
 
43
- を用いるとよいかと思います。
43
+
44
44
 
45
45
 
46
46