回答編集履歴
6
コード修正
test
CHANGED
@@ -80,7 +80,7 @@
|
|
80
80
|
|
81
81
|
|
82
82
|
|
83
|
-
const b_checked = update(data,
|
83
|
+
const b_checked = update(data, 1);
|
84
84
|
|
85
85
|
|
86
86
|
|
5
表現を修正
test
CHANGED
@@ -110,7 +110,7 @@
|
|
110
110
|
|
111
111
|
|
112
112
|
|
113
|
-
|
113
|
+
`parent_id`と`child_id`を指定して更新するパターンと、配列のインデックスを指定して更新するパターンを作ってみました。
|
114
114
|
|
115
115
|
|
116
116
|
|
4
表現を修正
test
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
-
あるオブジェクトの特定の
|
17
|
+
あるオブジェクトの特定のプロパティの値を更新する処理はスプレッド構文を使って以下のように書けます。
|
18
18
|
|
19
19
|
|
20
20
|
|
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
const updateId = (obj, newId) =>
|
24
24
|
|
25
|
-
// スプレッド構文でオブジェクトの中身を展開し、キーが"id"の
|
25
|
+
// スプレッド構文でオブジェクトの中身を展開し、キーが"id"のプロパティの値はnewIdにすることで更新する
|
26
26
|
|
27
27
|
({ ...obj, id: newId });
|
28
28
|
|
@@ -38,7 +38,7 @@
|
|
38
38
|
|
39
39
|
const update = (obj, key, value) =>
|
40
40
|
|
41
|
-
// スプレッド構文でオブジェクトの中身を展開し、キーがkeyの
|
41
|
+
// スプレッド構文でオブジェクトの中身を展開し、キーがkeyのプロパティの値はvalueにすることで更新する
|
42
42
|
|
43
43
|
({ ...obj, [key]: value });
|
44
44
|
|
3
間違いを修正
test
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
-
あるオブジェクトの特定の要素を更新する処理は以下のように書けます。
|
17
|
+
あるオブジェクトの特定の要素を更新する処理はスプレッド構文を使って以下のように書けます。
|
18
18
|
|
19
19
|
|
20
20
|
|
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
const updateId = (obj, newId) =>
|
24
24
|
|
25
|
-
// スプレッド
|
25
|
+
// スプレッド構文でオブジェクトの中身を展開し、キーが"id"の要素はnewIdにすることで更新する
|
26
26
|
|
27
27
|
({ ...obj, id: newId });
|
28
28
|
|
@@ -38,7 +38,7 @@
|
|
38
38
|
|
39
39
|
const update = (obj, key, value) =>
|
40
40
|
|
41
|
-
// スプレッド
|
41
|
+
// スプレッド構文でオブジェクトの中身を展開し、キーがkeyの要素はvalueにすることで更新する
|
42
42
|
|
43
43
|
({ ...obj, [key]: value });
|
44
44
|
|
2
例を追加
test
CHANGED
@@ -52,7 +52,7 @@
|
|
52
52
|
|
53
53
|
```js
|
54
54
|
|
55
|
-
const update = (arr, index, value) =>
|
55
|
+
const update = (arr, index, value = true) =>
|
56
56
|
|
57
57
|
arr.map((item, i) => ({
|
58
58
|
|
@@ -62,11 +62,53 @@
|
|
62
62
|
|
63
63
|
}));
|
64
64
|
|
65
|
+
|
66
|
+
|
67
|
+
const data = [{
|
68
|
+
|
69
|
+
id: "a",
|
70
|
+
|
71
|
+
checked: false,
|
72
|
+
|
73
|
+
}, {
|
74
|
+
|
75
|
+
id: "b",
|
76
|
+
|
77
|
+
checked: false,
|
78
|
+
|
79
|
+
}];
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
const b_checked = update(data, 2);
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
/*
|
88
|
+
|
89
|
+
b_checked = [{
|
90
|
+
|
91
|
+
id: "a",
|
92
|
+
|
93
|
+
checked: false,
|
94
|
+
|
95
|
+
}, {
|
96
|
+
|
97
|
+
id: "b",
|
98
|
+
|
99
|
+
checked: true, // 2番目のオブジェクトのcheckedプロパティが更新される
|
100
|
+
|
101
|
+
}];
|
102
|
+
|
103
|
+
*/
|
104
|
+
|
65
105
|
```
|
66
106
|
|
67
107
|
|
68
108
|
|
69
|
-
というわけで、これらを踏まえて考えてみると、
|
109
|
+
というわけで、これらを踏まえて考えてみると、以下のようになるのではないでしょうか。
|
110
|
+
|
111
|
+
|
70
112
|
|
71
113
|
ご質問のコードやデータにタイポと思われる部分が多く、正しく読み取れているか自信が無いので、`parent_id`と`child_id`を指定して更新するパターンと、配列のインデックスを指定して更新するパターンを作ってみました。
|
72
114
|
|
1
説明を追記
test
CHANGED
@@ -46,7 +46,27 @@
|
|
46
46
|
|
47
47
|
|
48
48
|
|
49
|
+
よって、配列の中の`i`番目のオブジェクトの`checked`プロパティを更新する処理はこう書きます。
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
```js
|
54
|
+
|
55
|
+
const update = (arr, index, value) =>
|
56
|
+
|
57
|
+
arr.map((item, i) => ({
|
58
|
+
|
59
|
+
...item,
|
60
|
+
|
61
|
+
checked: (i === index) ? value : item.checked,
|
62
|
+
|
63
|
+
}));
|
64
|
+
|
65
|
+
```
|
66
|
+
|
67
|
+
|
68
|
+
|
49
|
-
と
|
69
|
+
というわけで、これらを踏まえて考えてみると、こんな感じになるのではないでしょうか。
|
50
70
|
|
51
71
|
ご質問のコードやデータにタイポと思われる部分が多く、正しく読み取れているか自信が無いので、`parent_id`と`child_id`を指定して更新するパターンと、配列のインデックスを指定して更新するパターンを作ってみました。
|
52
72
|
|
@@ -90,7 +110,7 @@
|
|
90
110
|
|
91
111
|
...child,
|
92
112
|
|
93
|
-
checked: (parent_index === parentIndex && child
|
113
|
+
checked: (parent_index === parentIndex && child_index === childIndex) ? value : child.checked,
|
94
114
|
|
95
115
|
})),
|
96
116
|
|