回答編集履歴
8
テキスト追加
test
CHANGED
@@ -56,7 +56,7 @@
|
|
56
56
|
|
57
57
|
|
58
58
|
|
59
|
-
**(2)** `
|
59
|
+
**(2)** `x[0]` と`e` との比較で、プロパティ `id`、`name`ともに等しいかを検証する前に、念のため先頭に `x` が空の配列ではない検証を追加して、
|
60
60
|
|
61
61
|
|
62
62
|
|
7
テキスト追加
test
CHANGED
@@ -52,7 +52,7 @@
|
|
52
52
|
|
53
53
|
|
54
54
|
|
55
|
-
**(1)** `x.push(e)` は、`e`が追加された後の`x`の長さを返すので、`x.push(e)` の返す値は常に1以上の整数であり、1以上の整数を論理値として評価すると `true`になります。これを
|
55
|
+
**(1)** `x.push(e)` は、`e`が追加された後の`x`の長さを返すので、`x.push(e)` の返す値は常に1以上の整数であり、1以上の整数を論理値として評価すると `true`になります。これを [some](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/some) メソッドから `true` を返させるために使っています。
|
56
56
|
|
57
57
|
|
58
58
|
|
6
テキスト追加
test
CHANGED
@@ -40,11 +40,11 @@
|
|
40
40
|
|
41
41
|
|
42
42
|
|
43
|
-
上記のコード
|
43
|
+
上記のコード中、以下の行
|
44
44
|
|
45
45
|
|
46
46
|
|
47
|
-
`x[0].id == e.id && x[0].name == e.name && x.push(e)`
|
47
|
+
`a.some(x => x[0].id == e.id && x[0].name == e.name && x.push(e)) || a.push([e]); `
|
48
48
|
|
49
49
|
|
50
50
|
|
@@ -52,7 +52,7 @@
|
|
52
52
|
|
53
53
|
|
54
54
|
|
55
|
-
**(1)** `x.push(e)` は、`e`が追加された後の`x`の長さを返すので、`x.push(e)` の返す値は常に1以上の整数であり、1以上の整数を論理値として評価すると
|
55
|
+
**(1)** `x.push(e)` は、`e`が追加された後の`x`の長さを返すので、`x.push(e)` の返す値は常に1以上の整数であり、1以上の整数を論理値として評価すると `true`になります。これを `some`メソッドから `true` を返させるために使っています。
|
56
56
|
|
57
57
|
|
58
58
|
|
5
テキスト修正
test
CHANGED
@@ -36,37 +36,31 @@
|
|
36
36
|
|
37
37
|
---
|
38
38
|
|
39
|
-
**補足
|
39
|
+
**補足**
|
40
40
|
|
41
41
|
|
42
42
|
|
43
|
-
|
43
|
+
上記のコードに出てくる、論理積
|
44
44
|
|
45
45
|
|
46
46
|
|
47
|
-
|
47
|
+
`x[0].id == e.id && x[0].name == e.name && x.push(e)`
|
48
|
-
|
49
|
-
`x.push(e)` の返す値は常に 1以上の整数であり、1以上の整数を
|
50
|
-
|
51
|
-
論理値として評価すると、`true`であることを利用しています。
|
52
48
|
|
53
49
|
|
54
50
|
|
55
|
-
|
51
|
+
について、以下の2点を補足します。
|
56
52
|
|
57
53
|
|
58
54
|
|
59
|
-
`x
|
55
|
+
**(1)** `x.push(e)` は、`e`が追加された後の`x`の長さを返すので、`x.push(e)` の返す値は常に1以上の整数であり、1以上の整数を論理値として評価すると、`true`であることを利用しています。
|
60
56
|
|
61
57
|
|
62
58
|
|
63
|
-
|
59
|
+
**(2)** `id` と `name` が等しいかを検証する前に、念のため先頭に `x` が空の配列ではない検証を追加して、
|
64
|
-
|
65
|
-
念のため `x` が空の配列ではない検証を追加して、
|
66
60
|
|
67
61
|
|
68
62
|
|
69
|
-
`x
|
63
|
+
`x.length > 0 && x[0].id == e.id && ・・・`
|
70
64
|
|
71
65
|
|
72
66
|
|
4
ソース修正
test
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
```javascript
|
12
12
|
|
13
|
-
|
13
|
+
var array_3 = array_1.reduce(function(a, e) {
|
14
14
|
|
15
15
|
a.some(x => x[0].id == e.id && x[0].name == e.name && x.push(e)) || a.push([e]);
|
16
16
|
|
@@ -26,7 +26,7 @@
|
|
26
26
|
|
27
27
|
|
28
28
|
|
29
|
-
[https://jsfiddle.net/jun68ykt/Lfy3odqu/4
|
29
|
+
[https://jsfiddle.net/jun68ykt/Lfy3odqu/42/](https://jsfiddle.net/jun68ykt/Lfy3odqu/42/)
|
30
30
|
|
31
31
|
|
32
32
|
|
3
テキスト修正
test
CHANGED
@@ -36,11 +36,23 @@
|
|
36
36
|
|
37
37
|
---
|
38
38
|
|
39
|
-
**補足**
|
39
|
+
**補足1**
|
40
40
|
|
41
41
|
|
42
42
|
|
43
|
+
`a.some(x => x[0].id == e.id && x[0].name == e.name && x.push(e))`
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
の部分については、 `x.push(e)` は、`e`が追加された後の`x`の長さを返すので、
|
48
|
+
|
49
|
+
`x.push(e)` の返す値は常に 1以上の整数であり、1以上の整数を
|
50
|
+
|
51
|
+
論理値として評価すると、`true`であることを利用しています。
|
52
|
+
|
53
|
+
|
54
|
+
|
43
|
-
|
55
|
+
**補足2**
|
44
56
|
|
45
57
|
|
46
58
|
|
2
テキスト修正
test
CHANGED
@@ -31,3 +31,41 @@
|
|
31
31
|
|
32
32
|
|
33
33
|
参考になれば幸いです。
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
---
|
38
|
+
|
39
|
+
**補足**
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
上記のコードで、
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
`x => x[0].id == e.id && ・・・`
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
と書いているところで、 `id` と `name` が等しいかを検証する前に、
|
52
|
+
|
53
|
+
念のため `x` が空の配列ではない検証を追加して、
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
`x => x.length > 0 && x[0].id == e.id && ・・・`
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
と**しなくてもよい** 理由は、`a` に要素が追加されるのは、
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
`a.push([e])`
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
のときしかないので、`a` の要素である配列 `x` は空ではなく、
|
70
|
+
|
71
|
+
少なくとも1個の要素を持つことが分かっているからです。
|
1
テキスト修正
test
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
const array_3 = array_1.reduce((a, e) => {
|
14
14
|
|
15
|
-
a.some(x => x
|
15
|
+
a.some(x => x[0].id == e.id && x[0].name == e.name && x.push(e)) || a.push([e]);
|
16
16
|
|
17
17
|
return a;
|
18
18
|
|
@@ -26,7 +26,7 @@
|
|
26
26
|
|
27
27
|
|
28
28
|
|
29
|
-
[https://jsfiddle.net/jun68ykt/Lfy3odqu/
|
29
|
+
[https://jsfiddle.net/jun68ykt/Lfy3odqu/40/](https://jsfiddle.net/jun68ykt/Lfy3odqu/40/)
|
30
30
|
|
31
31
|
|
32
32
|
|