teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

8

説明の補足と、分かりにくい部分の修正を行いました。

2022/01/05 14:09

投稿

nutti
nutti

スコア7

title CHANGED
File without changes
body CHANGED
@@ -261,21 +261,13 @@
261
261
 
262
262
  // arrayの上書き処理
263
263
  setArray(oldArray);
264
-
265
264
  ```
266
265
 
267
266
  `getArray`や`setArray`の先はAPIになっており、そのまま`array`を取得・上書きしてくれます。
268
267
 
269
268
  上の例ですと、
270
269
  `idC`や`nestID`など階層が深いものもあり、その都度バラバラなので違うケースのときにうまく対応できずそれぞれのケースを用意しているのが現状です。
271
- 決まっているのは、
270
+
272
- ```
273
- {
274
- id: xxxx,
275
- value: yyyy,
276
- }
277
- ```
278
- というもので、このセットだけは崩れません。
279
271
  技術不足ですいませんが、何卒よろしくお願い致します。
280
272
 
281
273
  #### 追加1
@@ -313,8 +305,30 @@
313
305
  ]
314
306
  }
315
307
  ```
316
- のように、親のvalueの中に配列ができその中に同じ形のオブジェクトができます。
308
+ のように、親のvalueの中に新たな要素ができます。
317
309
  valueは配列を持つことができ、繰り返しネストすることができます。
310
+ ```
311
+ {
312
+ id: xxxx,
313
+ value: [
314
+ [
315
+ {
316
+ id: aaaaa,
317
+ value: bbbbb,
318
+ },
319
+ {
320
+ id: ccc,
321
+ value: ddd,
322
+ },
323
+ ],
324
+ [
325
+ ....同様
326
+ ]
327
+ ]
328
+ }
329
+ ```
330
+ と繰り返すことができます。
331
+
318
332
  取得したい要素のidは、
319
333
  ```
320
334
  lists(x)/item/idC/nestIDC1

7

一部valueについての補足を行いました

2022/01/05 14:09

投稿

nutti
nutti

スコア7

title CHANGED
File without changes
body CHANGED
@@ -314,19 +314,18 @@
314
314
  }
315
315
  ```
316
316
  のように、親のvalueの中に配列ができその中に同じ形のオブジェクトができます。
317
+ valueは配列を持つことができ、繰り返しネストすることができます。
317
318
  取得したい要素のidは、
318
319
  ```
319
320
  lists(x)/item/idC/nestIDC1
320
- ```
321
+
321
- となり、xは、
322
- ```
323
322
  x = {
324
323
  id: target_name,
325
324
  value: target_value
326
325
  }
327
326
  ```
328
327
  のような形で情報を得ることはできます。
329
- そのため、取得したいnoが含まれている
328
+ そのため、取得したいxが含まれている
330
329
  ```
331
330
  listsの直下のidがx.id, valueがx.valueのが含まれる要素
332
331
  ```

6

一部文字数制限のため形式省略いたしました。

2022/01/05 14:03

投稿

nutti
nutti

スコア7

title CHANGED
File without changes
body CHANGED
@@ -21,27 +21,25 @@
21
21
  value: [
22
22
  {
23
23
  id: "idA",
24
- value: "valueA",
24
+ value: "val A",
25
25
  },
26
26
  {
27
27
  id: "idB",
28
- value: [
28
+ value: "val B",
29
- 1, 2, 3
30
- ],
31
29
  },
32
30
  {
33
31
  id: "idC",
34
32
  value: [
35
33
  {
36
34
  id: "nestID_C1",
37
- value: "value nested c1",
35
+ value: "val C1",
38
36
  },
39
37
  {
40
38
  id: "nestID_C2",
41
39
  value: [
42
40
  {
43
41
  id: "nestID_C2-1",
44
- value: "value nested c2 - 1"
42
+ value: "val nest c2-1"
45
43
  }
46
44
  ],
47
45
  },
@@ -52,7 +50,7 @@
52
50
  value: [
53
51
  {
54
52
  id: "nestID_D1",
55
- value: "nest idD d-1,
53
+ value: "nest d-1",
56
54
  },
57
55
  {
58
56
  id: "nestID_D2",
@@ -94,27 +92,25 @@
94
92
  value: [
95
93
  {
96
94
  id: "idA",
97
- value: "valueA",
95
+ value: "val A",
98
96
  },
99
97
  {
100
98
  id: "idB",
101
- value: [
99
+ value: "val B,
102
- 1, 2, 3
103
- ],
104
100
  },
105
101
  {
106
102
  id: "idC",
107
103
  value: [
108
104
  {
109
105
  id: "nestID_C1",
110
- value: "value nested c1",
106
+ value: "val nest c1",
111
107
  },
112
108
  {
113
109
  id: "nestID_C2",
114
110
  value: [
115
111
  {
116
112
  id: "nestID_C2-1",
117
- value: "value nested c2 - 1"
113
+ value: "val nested c2-1"
118
114
  }
119
115
  ],
120
116
  },
@@ -125,7 +121,7 @@
125
121
  value: [
126
122
  {
127
123
  id: "nestID_D1",
128
- value: "nest idD d-1,
124
+ value: "nest d-1,
129
125
  },
130
126
  {
131
127
  id: "nestID_D2",

5

選択要素Xについて、ミスと記載もれがありましたので追記致しました。文字数制限になり一部を省略致しました。

2022/01/05 13:59

投稿

nutti
nutti

スコア7

title CHANGED
File without changes
body CHANGED
@@ -52,9 +52,7 @@
52
52
  value: [
53
53
  {
54
54
  id: "nestID_D1",
55
- value: [
55
+ value: "nest idD d-1,
56
-
57
- ],
58
56
  },
59
57
  {
60
58
  id: "nestID_D2",
@@ -127,9 +125,7 @@
127
125
  value: [
128
126
  {
129
127
  id: "nestID_D1",
130
- value: [
128
+ value: "nest idD d-1,
131
-
132
- ],
133
129
  },
134
130
  {
135
131
  id: "nestID_D2",
@@ -170,8 +166,7 @@
170
166
  現在の私のやり方ですと、
171
167
 
172
168
  ```
173
- // noのvalueが200のものを上書きしたい
174
- // lists(200)/item/idC/nestIDC2/nestIDC2_1
169
+ // lists({id:"no", value: 200})/item/idC/nestID_C2/nestID_C2-1
175
170
  // lists直下のNOは、状況に合わせてこちらで選択する。
176
171
  // 上で記載した通り、今回は、lists下は200を取得する
177
172
  var oldArray = getArray(); // arrayの配列を取得
@@ -214,7 +209,7 @@
214
209
  ```
215
210
 
216
211
  // no100の中にある、valueが400のnestID_D2-1を上書きしたい
217
- // lists(100)/item/idD/nestID_D2(400)/nestID_D2-1
212
+ // lists({id:"no", value: 100})/item/idD/nestID_D2({id:"nestID_D2-NO", value: 400})/nestID_D2-1
218
213
  // lists直下のNOと、nestID_D2下のNOは、状況に合わせてこちらで選択する。
219
214
  // 上で記載した通り、今回は、lists下は100, nestID_D2下は400を取得する
220
215
  var oldArray = getArray(); // arrayの配列を取得
@@ -276,7 +271,7 @@
276
271
  `getArray`や`setArray`の先はAPIになっており、そのまま`array`を取得・上書きしてくれます。
277
272
 
278
273
  上の例ですと、
279
- `idC`や`nestID`など階層が深いものもあり、その都度バラバラなので違うケースのときにうまく対応できずそれぞれのケースを用意しているのが現状です。。。
274
+ `idC`や`nestID`など階層が深いものもあり、その都度バラバラなので違うケースのときにうまく対応できずそれぞれのケースを用意しているのが現状です。
280
275
  決まっているのは、
281
276
  ```
282
277
  {
@@ -285,7 +280,6 @@
285
280
  }
286
281
  ```
287
282
  というもので、このセットだけは崩れません。
288
-
289
283
  技術不足ですいませんが、何卒よろしくお願い致します。
290
284
 
291
285
  #### 追加1
@@ -324,21 +318,27 @@
324
318
  }
325
319
  ```
326
320
  のように、親のvalueの中に配列ができその中に同じ形のオブジェクトができます。
327
-
328
321
  取得したい要素のidは、
329
-
330
322
  ```
331
323
  lists(x)/item/idC/nestIDC1
332
324
  ```
325
+ となり、xは、
326
+ ```
327
+ x = {
328
+ id: target_name,
329
+ value: target_value
330
+ }
331
+ ```
333
332
  のような形で情報を得ることはできます。
334
-
335
- しかし、no(x)の項目はこちらで必要に応じて選択する必要があります。
336
333
  そのため、取得したいnoが含まれている
337
334
  ```
338
- lists[x]
335
+ listsの直下のidがx.id, valueがx.valueのが含まれる要素
339
336
  ```
340
337
  などは、状況に応じて取得する工程は必要になります。
341
338
 
342
339
  #### 追記2
343
340
  参考例を追加いたしました。
344
- 追加内容としましては、同一階層にあるものが1階層目にしかなく誤解がありそうでしたので参考配列を変更し、例を追加いたしました。
341
+ 追加内容としましては、同一階層にあるものが1階層目にしかなく誤解がありそうでしたので参考配列を変更し、例を追加いたしました。
342
+
343
+ #### 追記3
344
+ 選択要素のxの仕様にもれがあったので、追記いたしました。

4

表記にミスがありましたので、修正いたしました。

2022/01/05 13:56

投稿

nutti
nutti

スコア7

title CHANGED
File without changes
body CHANGED
@@ -33,14 +33,14 @@
33
33
  id: "idC",
34
34
  value: [
35
35
  {
36
- id: "nestIDC1",
36
+ id: "nestID_C1",
37
37
  value: "value nested c1",
38
38
  },
39
39
  {
40
- id: "nestIDC2",
40
+ id: "nestID_C2",
41
41
  value: [
42
42
  {
43
- id: "nestIDC2-1",
43
+ id: "nestID_C2-1",
44
44
  value: "value nested c2 - 1"
45
45
  }
46
46
  ],

3

例を追加しました。また分かりにくい文書を変更しました。

2022/01/05 13:34

投稿

nutti
nutti

スコア7

title CHANGED
File without changes
body CHANGED
@@ -47,6 +47,42 @@
47
47
  },
48
48
  ],
49
49
  },
50
+ {
51
+ id: "idD",
52
+ value: [
53
+ {
54
+ id: "nestID_D1",
55
+ value: [
56
+
57
+ ],
58
+ },
59
+ {
60
+ id: "nestID_D2",
61
+ value: [
62
+ [
63
+ {
64
+ id: "nestID_D2-NO",
65
+ value: "300"
66
+ },
67
+ {
68
+ id: "nestID_D2-1",
69
+ value: "value nested d2 no-300 - 1"
70
+ }
71
+ ],
72
+ [
73
+ {
74
+ id: "nestID_D2-NO",
75
+ value: "400"
76
+ },
77
+ {
78
+ id: "nestID_D2-1",
79
+ value: "value nested d2 no-400 - 1"
80
+ }
81
+ ],
82
+ ],
83
+ },
84
+ ],
85
+ },
50
86
  ]
51
87
  }
52
88
  ],
@@ -72,42 +108,79 @@
72
108
  id: "idC",
73
109
  value: [
74
110
  {
75
- id: "nestIDC1",
111
+ id: "nestID_C1",
76
112
  value: "value nested c1",
77
113
  },
78
114
  {
79
- id: "nestIDC2",
115
+ id: "nestID_C2",
80
116
  value: [
81
117
  {
82
- id: "nestIDC2-1",
118
+ id: "nestID_C2-1",
83
119
  value: "value nested c2 - 1"
84
120
  }
85
121
  ],
86
122
  },
87
123
  ],
88
124
  },
125
+ {
126
+ id: "idD",
127
+ value: [
128
+ {
129
+ id: "nestID_D1",
130
+ value: [
131
+
132
+ ],
133
+ },
134
+ {
135
+ id: "nestID_D2",
136
+ value: [
137
+ [
138
+ {
139
+ id: "nestID_D2-NO",
140
+ value: "300"
141
+ },
142
+ {
143
+ id: "nestID_D2-1",
144
+ value: "value nested d2 no-300 - 1"
145
+ }
146
+ ],
147
+ [
148
+ {
149
+ id: "nestID_D2-NO",
150
+ value: "400"
151
+ },
152
+ {
153
+ id: "nestID_D2-1",
154
+ value: "value nested d2 no-400 - 1"
155
+ }
156
+ ],
157
+ ],
158
+ },
159
+ ],
160
+ },
89
161
  ]
90
162
  }
91
163
  ],
92
164
  ]
93
165
  }
94
- ]
166
+ ];
95
167
  ```
96
168
 
97
169
  この配列で、それぞれを置き換えたいです。
98
170
  現在の私のやり方ですと、
99
171
 
100
172
  ```
101
-
102
- // noのvalueが200のものの、itemの中身を上書きしたい
173
+ // noのvalueが200のものを上書きしたい
174
+ // lists(200)/item/idC/nestIDC2/nestIDC2_1
175
+ // lists直下のNOは、状況に合わせてこちらで選択する。
176
+ // 上で記載した通り、今回は、lists下は200を取得する
103
177
  var oldArray = getArray(); // arrayの配列を取得
104
- var lists = oldArray.find(el => el.id == "lists"); //listsの取得
178
+ var lists = oldArray.find(el => el.id == "lists");
105
- var itemIndex = -1; // noが一致する配列のindex
179
+ var itemIndex = -1;
106
180
  var targetNo = 200;
107
181
 
108
182
  // no200を探す
109
183
  for (let i=0; i<lists.value.length; i++) {
110
- // noの要素を検索
111
184
  const _item = lists.value[i].find(el => el.id == "no");
112
185
  if (_item.value == targetNo) {
113
186
  itemIndex = i;
@@ -120,16 +193,16 @@
120
193
  return;
121
194
  }
122
195
 
123
- // no 200が含まれている配列を取得
196
+ // no 200配列を取得
124
197
  var list = lists.value[itemIndex];
125
198
 
126
199
  // itemを取得
127
200
  var item = list.find(el => el.id == "item");
128
201
 
129
- // itemのvalueの中から、変更したいものを取り出す => 例:nestIDC2 -> nestIDC2-1のvalueを書き換える
202
+ // itemのvalueの中から、変更したいものを取り出す => 例:nestID_C2 -> nestID_C2-1のvalueを書き換える
130
203
  var idC = item.value.find(el => el.id == "idC");
131
- var nestIDC2 = idC.value.find(el => el.id == "nestIDC2");
204
+ var nestIDC2 = idC.value.find(el => el.id == "nestID_C2");
132
- var nestIDC2_1 = nestIDC2.value.find(el => el.id == "nestIDC2-1");
205
+ var nestIDC2_1 = nestIDC2.value.find(el => el.id == "nestID_C2-1");
133
206
 
134
207
  // 書き換え
135
208
  nestIDC2_1.value = "new value";
@@ -138,6 +211,68 @@
138
211
  setArray(oldArray);
139
212
  ```
140
213
 
214
+ ```
215
+
216
+ // no100の中にある、valueが400のnestID_D2-1を上書きしたい
217
+ // lists(100)/item/idD/nestID_D2(400)/nestID_D2-1
218
+ // lists直下のNOと、nestID_D2下のNOは、状況に合わせてこちらで選択する。
219
+ // 上で記載した通り、今回は、lists下は100, nestID_D2下は400を取得する
220
+ var oldArray = getArray(); // arrayの配列を取得
221
+ var lists = oldArray.find(el => el.id == "lists");
222
+ var itemIndex = -1;
223
+ var targetNo = 100;
224
+
225
+ // lists直下のno100を探す
226
+ for (let i=0; i<lists.value.length; i++) {
227
+ const _item = lists.value[i].find(el => el.id == "no");
228
+ if (_item.value == targetNo) {
229
+ itemIndex = i;
230
+ break;
231
+ }
232
+ }
233
+
234
+ // 存在しないときは終了
235
+ if (itemIndex == -1) {
236
+ return;
237
+ }
238
+
239
+ // no 100の配列を取得
240
+ var list = lists.value[itemIndex];
241
+
242
+ // itemを取得
243
+ var item = list.find(el => el.id == "item");
244
+
245
+ // itemのvalueの中から、変更したいものを取り出す
246
+ var idD = item.value.find(el => el.id == "idD");
247
+ var nestIDC2 = idD.value.find(el => el.id == "nestID_D2");
248
+
249
+ // no400を探す
250
+ var nestedTargetID = 400;
251
+ var nestedItemIndex = -1;
252
+
253
+ for (let i=0; i<nestIDC2.value.length; i++) {
254
+ const _item = nestIDC2.value[i].find(el => el.id == "nestID_D2-NO");
255
+ if (_item.value == nestedTargetID) {
256
+ nestedItemIndex = i;
257
+ break;
258
+ }
259
+ }
260
+
261
+ // 存在しないときは終了
262
+ if (nestedItemIndex == -1) {
263
+ return;
264
+ }
265
+
266
+ var nestID_D2_1 = nestIDC2.value.find(el => el.id == "nestID_D2-1");
267
+
268
+ // 書き換え
269
+ nestID_D2_1.value = "new value";
270
+
271
+ // arrayの上書き処理
272
+ setArray(oldArray);
273
+
274
+ ```
275
+
141
276
  `getArray`や`setArray`の先はAPIになっており、そのまま`array`を取得・上書きしてくれます。
142
277
 
143
278
  上の例ですと、
@@ -149,11 +284,11 @@
149
284
  value: yyyy,
150
285
  }
151
286
  ```
152
- というもので、こは崩れません。
287
+ というもので、このセットだけは崩れません。
153
288
 
154
289
  技術不足ですいませんが、何卒よろしくお願い致します。
155
290
 
156
- #### 追加
291
+ #### 追加1
157
292
  ご質問にありましたルールについて追記いたします。
158
293
  基本的には、
159
294
  ```
@@ -193,13 +328,17 @@
193
328
  取得したい要素のidは、
194
329
 
195
330
  ```
196
- lists/item/idC/nestIDC1
331
+ lists(x)/item/idC/nestIDC1
197
332
  ```
198
333
  のような形で情報を得ることはできます。
199
334
 
200
- しかし、noの項目はこちらで必要に応じて選択する必要があります。
335
+ しかし、no(x)の項目はこちらで必要に応じて選択する必要があります。
201
336
  そのため、取得したいnoが含まれている
202
337
  ```
203
338
  lists[x]
204
339
  ```
205
- 取得する工程は必要になります。
340
+ などは、状況に応じて取得する工程は必要になります。
341
+
342
+ #### 追記2
343
+ 参考例を追加いたしました。
344
+ 追加内容としましては、同一階層にあるものが1階層目にしかなく誤解がありそうでしたので参考配列を変更し、例を追加いたしました。

2

2022/01/05 13:32

投稿

nutti
nutti

スコア7

title CHANGED
File without changes
body CHANGED
@@ -197,4 +197,9 @@
197
197
  ```
198
198
  のような形で情報を得ることはできます。
199
199
 
200
- しかし、noの項目はこちらで必要に応じて選択する必要があります。
200
+ しかし、noの項目はこちらで必要に応じて選択する必要があります。
201
+ そのため、取得したいnoが含まれている
202
+ ```
203
+ lists[x]
204
+ ```
205
+ を取得する工程は必要になります。

1

2022/01/05 12:34

投稿

nutti
nutti

スコア7

title CHANGED
File without changes
body CHANGED
@@ -151,4 +151,50 @@
151
151
  ```
152
152
  というもので、これは崩れません。
153
153
 
154
- 技術不足ですいませんが、何卒よろしくお願い致します。
154
+ 技術不足ですいませんが、何卒よろしくお願い致します。
155
+
156
+ #### 追加
157
+ ご質問にありましたルールについて追記いたします。
158
+ 基本的には、
159
+ ```
160
+ {
161
+ id: xxxx,
162
+ value: yyyy,
163
+ }
164
+ ```
165
+ が絶対の形となっており、これが1つのまとまりとなります。
166
+ これが、同じ階層に並ぶ場合には
167
+ ```
168
+ {
169
+ id: xxxx,
170
+ value: yyyy,
171
+ },
172
+ {
173
+ id: aaaaa,
174
+ value: bbbb,
175
+ }
176
+ ```
177
+ と同階層に連なります。
178
+
179
+ ネストされる場合には必ず
180
+ ```
181
+ {
182
+ id: xxxx,
183
+ value: [
184
+ {
185
+ id: aaaaa,
186
+ value: bbbbb,
187
+ },
188
+ ]
189
+ }
190
+ ```
191
+ のように、親のvalueの中に配列ができその中に同じ形のオブジェクトができます。
192
+
193
+ 取得したい要素のidは、
194
+
195
+ ```
196
+ lists/item/idC/nestIDC1
197
+ ```
198
+ のような形で情報を得ることはできます。
199
+
200
+ しかし、noの項目はこちらで必要に応じて選択する必要があります。