質問編集履歴

27

修正

2021/07/29 00:03

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -194,7 +194,7 @@
194
194
 
195
195
 
196
196
 
197
- // childenのデータを更新
197
+ // childenschildenでデータを更新
198
198
 
199
199
  const newRowData = rowData.map((currentValue) => {
200
200
 

26

修正

2021/07/29 00:02

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -222,7 +222,7 @@
222
222
 
223
223
  let newChildren = { id: 0, parentId: id, name: null, value: null, rowVersion: null };
224
224
 
225
- findChildren ? (newChildren = findChildren) : null;
225
+ findChildren ? (newChildren = findChildren) : null;
226
226
 
227
227
 
228
228
 

25

修正

2021/07/29 00:01

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -218,19 +218,11 @@
218
218
 
219
219
 
220
220
 
221
- // newChildrenを準備
221
+ // newChildrenを準備、 findChildrenがあれば差し替え
222
222
 
223
223
  let newChildren = { id: 0, parentId: id, name: null, value: null, rowVersion: null };
224
224
 
225
-
226
-
227
- // findChildrenがあれば差し替え
228
-
229
- if (findChildren) {
230
-
231
- newChildren = findChildren;
225
+ findChildren ? (newChildren = findChildren) : null;
232
-
233
- }
234
226
 
235
227
 
236
228
 

24

修正

2021/07/29 00:01

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -234,7 +234,7 @@
234
234
 
235
235
 
236
236
 
237
- // newChildrenを更新(childrenの新規 or 更新の両方に対応)
237
+ // newChildrenを更新
238
238
 
239
239
  newChildren.name = currentValue2.name;
240
240
 

23

修正

2021/07/28 23:57

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -248,7 +248,7 @@
248
248
 
249
249
 
250
250
 
251
- currentValue.processListStandardValues = childrens;
251
+ currentValue.values = childrens;
252
252
 
253
253
  }
254
254
 

22

修正

2021/07/28 23:56

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -234,7 +234,7 @@
234
234
 
235
235
 
236
236
 
237
- // childrensのchildren更新
237
+ // newChildrenを更新(childrenの新規 or 更新の両方に対応)
238
238
 
239
239
  newChildren.name = currentValue2.name;
240
240
 

21

修正

2021/07/28 23:56

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -151,3 +151,111 @@
151
151
  ・parentのidと、childrensのchildrenのparentIdは紐づいてます。
152
152
 
153
153
  ・childrensのidとrowVersion列は元のデータを利用、新しく入力したchildrensのchildrenで1つずつ入力箇所のみ、上書きしなければならない
154
+
155
+
156
+
157
+ (追記)
158
+
159
+ 以下のようなコードを考えてみました。間違っている個所があるかもしれませんが。
160
+
161
+ 少し冗長になってしまったかもしれません。
162
+
163
+ ```javascript
164
+
165
+ let id = 1;
166
+
167
+
168
+
169
+ let rowData = [
170
+
171
+ {
172
+
173
+ id: 1, name: "A", values: [
174
+
175
+ { id: 1, parentId: 1, name: "a", value: 1, rowVersion: "xxx"}
176
+
177
+ ]
178
+
179
+ }
180
+
181
+ ];
182
+
183
+
184
+
185
+ let values = [
186
+
187
+ { id: 1, parentId: 1, name: "a", value: 1 },
188
+
189
+ { id: 0, parentId: 1, name: "b", value: 4 },
190
+
191
+ { id: 0, parentId: 1, name: "c", value: null } // これは入力していないデータ
192
+
193
+ ];
194
+
195
+
196
+
197
+ // childenのデータを更新
198
+
199
+ const newRowData = rowData.map((currentValue) => {
200
+
201
+ // 例ではこのif文はid=1でtrueになります
202
+
203
+ if (currentValue.id === id) {
204
+
205
+
206
+
207
+ // valuesを、元データに上書きしたい
208
+
209
+ let childrens = values.map((currentValue2) => {
210
+
211
+ // find
212
+
213
+ let findChildren = currentValue.values.find((element) => {
214
+
215
+ return element.id === currentValue2.id && element.name === currentValue2.name;
216
+
217
+ });
218
+
219
+
220
+
221
+ // newChildrenを準備
222
+
223
+ let newChildren = { id: 0, parentId: id, name: null, value: null, rowVersion: null };
224
+
225
+
226
+
227
+ // findChildrenがあれば差し替え
228
+
229
+ if (findChildren) {
230
+
231
+ newChildren = findChildren;
232
+
233
+ }
234
+
235
+
236
+
237
+ // childrensのchildrenで更新
238
+
239
+ newChildren.name = currentValue2.name;
240
+
241
+ newChildren.value = currentValue2.value;
242
+
243
+
244
+
245
+ return newChildren;
246
+
247
+ }, []);
248
+
249
+
250
+
251
+ currentValue.processListStandardValues = childrens;
252
+
253
+ }
254
+
255
+
256
+
257
+ return currentValue;
258
+
259
+ }, []);
260
+
261
+ ```

20

修正

2021/07/28 23:54

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -150,4 +150,4 @@
150
150
 
151
151
  ・parentのidと、childrensのchildrenのparentIdは紐づいてます。
152
152
 
153
- ・childrensのidとrowVersion列は元のデータを利用、新しく入力したchildrensで1つずつ入力箇所のみ、上書きしなければならない
153
+ ・childrensのidとrowVersion列は元のデータを利用、新しく入力したchildrensのchildrenで1つずつ入力箇所のみ、上書きしなければならない

19

2021/07/28 23:30

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -34,9 +34,11 @@
34
34
 
35
35
  ■ gridのセルをダブルクリックすると、childrenの入力を子画面で行います。
36
36
 
37
- 画面イメージ
37
+ 画面イメージ(ヘッダ追加)
38
38
 
39
39
  ** * * * *
40
+
41
+ name value
40
42
 
41
43
  a □
42
44
 

18

2021/07/28 22:23

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -92,15 +92,15 @@
92
92
 
93
93
 
94
94
 
95
- // 子画面で入力した変更データ(rowVersion列を追加)
95
+ // 子画面で入力した変更データ(この入力データにrowVersion列はありません。)
96
96
 
97
97
  let values = [
98
98
 
99
- { id: 1, parentId: 1, name: "a", value: 1, rowVersion: "xxx" },
99
+ { id: 1, parentId: 1, name: "a", value: 1 },
100
100
 
101
- { id: 0, parentId: 1, name: "b", value: 4, rowVersion: null },
101
+ { id: 0, parentId: 1, name: "b", value: 4 },
102
102
 
103
- { id: 0, parentId: 1, name: "c", value: null, rowVersion: null } // これは入力していないデータ
103
+ { id: 0, parentId: 1, name: "c", value: null } // これは入力していないデータ
104
104
 
105
105
  ];
106
106
 

17

2021/07/28 22:17

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -92,15 +92,15 @@
92
92
 
93
93
 
94
94
 
95
- // 子画面で入力した変更データ()
95
+ // 子画面で入力した変更データ(rowVersion列を追加)
96
96
 
97
97
  let values = [
98
98
 
99
- { id: 1, parentId: 1, name: "a", value: 1 },
99
+ { id: 1, parentId: 1, name: "a", value: 1, rowVersion: "xxx" },
100
100
 
101
- { id: 0, parentId: 1, name: "b", value: 4 },
101
+ { id: 0, parentId: 1, name: "b", value: 4, rowVersion: null },
102
102
 
103
- { id: 0, parentId: 1, name: "c", value: null } // これは入力していないデータ
103
+ { id: 0, parentId: 1, name: "c", value: null, rowVersion: null } // これは入力していないデータ
104
104
 
105
105
  ];
106
106
 

16

2021/07/28 22:09

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -148,4 +148,4 @@
148
148
 
149
149
  ・parentのidと、childrensのchildrenのparentIdは紐づいてます。
150
150
 
151
- ・idとrowVersion列は元のデータを利用、新しく入力したchildrensで1つずつ入力箇所のみ、上書きしなければならない
151
+ childrensのidとrowVersion列は元のデータを利用、新しく入力したchildrensで1つずつ入力箇所のみ、上書きしなければならない

15

2021/07/28 22:07

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -148,4 +148,4 @@
148
148
 
149
149
  ・parentのidと、childrensのchildrenのparentIdは紐づいてます。
150
150
 
151
- ・idとrowVersion列は元のデータを利用、新しく入力したchildrensで1つずつ上書きしなければならない
151
+ ・idとrowVersion列は元のデータを利用、新しく入力したchildrensで1つずつ入力箇所のみ、上書きしなければならない

14

2021/07/28 22:06

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
 
10
10
 
11
- ■元データ
11
+ ■元データ(rowVersion列を追加)
12
12
 
13
13
  ```javascript
14
14
 
@@ -18,7 +18,7 @@
18
18
 
19
19
  id: 1, name: "A", values: [
20
20
 
21
- { id: 1, parentId: 1, name: "a", value: 1 }
21
+ { id: 1, parentId: 1, name: "a", value: 1 , rowVersion: "xxx" }
22
22
 
23
23
  ]
24
24
 
@@ -74,7 +74,7 @@
74
74
 
75
75
 
76
76
 
77
- // 元データ
77
+ // 元データ(rowVersion列を追加)
78
78
 
79
79
  let rowData = [
80
80
 
@@ -82,7 +82,7 @@
82
82
 
83
83
  id: 1, name: "A", values: [
84
84
 
85
- { id: 1, parentId: 1, name: "a", value: 1 }
85
+ { id: 1, parentId: 1, name: "a", value: 1, rowVersion: "xxx"}
86
86
 
87
87
  ]
88
88
 
@@ -141,3 +141,11 @@
141
141
  });
142
142
 
143
143
  ```
144
+
145
+
146
+
147
+ 仕様追加しました。
148
+
149
+ ・parentのidと、childrensのchildrenのparentIdは紐づいてます。
150
+
151
+ ・idとrowVersion列は元のデータを利用、新しく入力したchildrensで1つずつ上書きしなければならない

13

修正

2021/07/28 22:03

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -55,6 +55,12 @@
55
55
  ただし、子画面で全てが入力しているとは限らないし、入力を消したものがnullになる場合もある。childrenのidが発行済みの場合もある。
56
56
 
57
57
  ※parentのidが0の時もありますが、それは質問の内容から省略します。
58
+
59
+
60
+
61
+ 問題の原因はidがないものがあるのにfindを使っているので、もしかしたら
62
+
63
+ nameとvalue !== nullの2つの条件で取得しないといけないかもしれません。
58
64
 
59
65
 
60
66
 

12

修正

2021/07/28 11:08

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -114,6 +114,8 @@
114
114
 
115
115
  let childrens = values.map((currentValue2) => {
116
116
 
117
+ // 問題の原因はidがないからかも?
118
+
117
119
  const newValue = currentRowData.values.find(({ id }) => currentValue2.id === id);
118
120
 
119
121
  return newValue ?? currentValue2;

11

修正

2021/07/28 11:05

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -54,8 +54,6 @@
54
54
 
55
55
  ただし、子画面で全てが入力しているとは限らないし、入力を消したものがnullになる場合もある。childrenのidが発行済みの場合もある。
56
56
 
57
- childrenは最小の配列数にしたい(valueがnullでもchildrenのidが発行済みの場合は含める、childrenのidが0でvalueがnullの場合は含めない)
58
-
59
57
  ※parentのidが0の時もありますが、それは質問の内容から省略します。
60
58
 
61
59
 
@@ -102,7 +100,7 @@
102
100
 
103
101
 
104
102
 
105
- // childenのデータを更新するが、childrenは最小の配列数にしたい(childrenのidが発行済みの場合は含める)
103
+ // childenのデータを更新
106
104
 
107
105
  const newRowData = rowData.map((currentValue) => {
108
106
 

10

修正

2021/07/28 10:51

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -50,7 +50,7 @@
50
50
 
51
51
 
52
52
 
53
- ■ [選択]ボタンを押したとき、どのように処理すれば良いでしょうか?
53
+ ■ [選択]ボタンを押したとき、下記のscriptのような動きを想定していますが、うまくいかなく、どのように処理すれば良いでしょうか?
54
54
 
55
55
  ただし、子画面で全てが入力しているとは限らないし、入力を消したものがnullになる場合もある。childrenのidが発行済みの場合もある。
56
56
 

9

修正

2021/07/28 10:48

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -56,7 +56,7 @@
56
56
 
57
57
  childrenは最小の配列数にしたい(valueがnullでもchildrenのidが発行済みの場合は含める、childrenのidが0でvalueがnullの場合は含めない)
58
58
 
59
- ※parentのidが0の時もありますが、それは省略します。
59
+ ※parentのidが0の時もありますが、それは質問の内容から省略します。
60
60
 
61
61
 
62
62
 

8

修正

2021/07/28 10:36

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -54,7 +54,7 @@
54
54
 
55
55
  ただし、子画面で全てが入力しているとは限らないし、入力を消したものがnullになる場合もある。childrenのidが発行済みの場合もある。
56
56
 
57
- childrenは最小の配列数にしたい(childrenのidが発行済みの場合は含める)
57
+ childrenは最小の配列数にしたい(valueがnullでもchildrenのidが発行済みの場合は含める、childrenのidが0でvalueがnullの場合は含めない)
58
58
 
59
59
  ※parentのidが0の時もありますが、それは省略します。
60
60
 

7

修正

2021/07/28 10:35

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -10,13 +10,7 @@
10
10
 
11
11
  ■元データ
12
12
 
13
- 下記のいずれかのパターンのように子要素の配列数が異なる時
14
-
15
-
16
-
17
13
  ```javascript
18
-
19
- 例①
20
14
 
21
15
  let currentRowData = [
22
16
 

6

修正

2021/07/28 10:34

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -94,13 +94,15 @@
94
94
 
95
95
 
96
96
 
97
- // 子画面で入力した変更データ
97
+ // 子画面で入力した変更データ()
98
98
 
99
99
  let values = [
100
100
 
101
101
  { id: 1, parentId: 1, name: "a", value: 1 },
102
102
 
103
- { id: 0, parentId: 1, name: "d", value: 4 }
103
+ { id: 0, parentId: 1, name: "b", value: 4 },
104
+
105
+ { id: 0, parentId: 1, name: "c", value: null } // これは入力していないデータ
104
106
 
105
107
  ];
106
108
 

5

修正

2021/07/28 10:34

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -110,7 +110,7 @@
110
110
 
111
111
  const newRowData = rowData.map((currentValue) => {
112
112
 
113
-
113
+ // 例ではこのif文はid=1でtrueになります
114
114
 
115
115
  if (currentValue.id === id) {
116
116
 

4

修正

2021/07/28 10:32

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- javascriptの連想配列の中の子要素を、別の子要素の配列で上書きしたい
1
+ javascriptの連想配列の中の子要素を、別の子要素形式の配列で上書きしたい
test CHANGED
@@ -1,4 +1,4 @@
1
- javascriptの連想配列の中の子要素を、別の子要素の配列で上書きしたいですが、うまくできなくて困っています。
1
+ javascriptの連想配列の中の子要素を、別の子要素形式の配列で上書きしたいですが、うまくできなくて困っています。
2
2
 
3
3
 
4
4
 

3

修正

2021/07/28 10:31

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -112,9 +112,11 @@
112
112
 
113
113
 
114
114
 
115
- // valuesを、元データに上書きしたい
115
+ if (currentValue.id === id) {
116
116
 
117
+
118
+
117
- if (currentValue.id === id) {
119
+ // valuesを、元データに上書きしたい
118
120
 
119
121
  let childrens = values.map((currentValue2) => {
120
122
 

2

修正

2021/07/28 10:30

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- javascriptの連想配列の中の子要素を、別の子要素の配列上書きしたい
1
+ javascriptの連想配列の中の子要素を、別の子要素の配列上書きしたい
test CHANGED
@@ -1,4 +1,4 @@
1
- javascriptの連想配列の中の子要素を、別の子要素の配列上書きしたいですが、うまくできなくて困っています。
1
+ javascriptの連想配列の中の子要素を、別の子要素の配列上書きしたいですが、うまくできなくて困っています。
2
2
 
3
3
 
4
4
 

1

修正

2021/07/28 10:29

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -58,9 +58,9 @@
58
58
 
59
59
  ■ [選択]ボタンを押したとき、どのように処理すれば良いでしょうか?
60
60
 
61
- ただし、子画面で全てが入力しているとは限らないし、入力を消したものがnullになる場合もある。idが発行済みの場合もある。
61
+ ただし、子画面で全てが入力しているとは限らないし、入力を消したものがnullになる場合もある。childrenのidが発行済みの場合もある。
62
62
 
63
- childenのデータを更新するが、childrenは最小の配列数にしたい(childrenのidが発行済みの場合は含める)
63
+ childrenは最小の配列数にしたい(childrenのidが発行済みの場合は含める)
64
64
 
65
65
  ※parentのidが0の時もありますが、それは省略します。
66
66