回答編集履歴

1

コメントを受けて修正

2018/11/07 01:29

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア36134

test CHANGED
@@ -165,3 +165,135 @@
165
165
  */
166
166
 
167
167
  ```
168
+
169
+
170
+
171
+ ### コメントを受けて修正
172
+
173
+ [サンプル](https://jsfiddle.net/Lhankor_Mhy/Lg89kd5u/)
174
+
175
+ (サンプルではわざとtheadの順番を変えてあります)
176
+
177
+ ```js
178
+
179
+ const json = [
180
+
181
+ {
182
+
183
+ "a": "あ",
184
+
185
+ "b": "い",
186
+
187
+ "c": "う",
188
+
189
+ "bodies": [
190
+
191
+ {
192
+
193
+ "d": "え",
194
+
195
+ "e": "お"
196
+
197
+ },
198
+
199
+ {
200
+
201
+ "d": "ええ",
202
+
203
+ "e": "おお"
204
+
205
+ }
206
+
207
+ ]
208
+
209
+ },
210
+
211
+ {
212
+
213
+ "a": "ああ",
214
+
215
+ "b": "いい",
216
+
217
+ "c": "うう",
218
+
219
+ "bodies": [
220
+
221
+ {
222
+
223
+ "d": "えええ",
224
+
225
+ "e": "おおお"
226
+
227
+ },
228
+
229
+ {
230
+
231
+ "d": "ええええ",
232
+
233
+ "e": "おおおお"
234
+
235
+ }
236
+
237
+ ]
238
+
239
+ }
240
+
241
+ ] ;
242
+
243
+ const header = {
244
+
245
+ "d": "メモ",
246
+
247
+ "c": "担当者",
248
+
249
+ "e": "名称"
250
+
251
+ };
252
+
253
+
254
+
255
+ const reverseHeader = new Map( Object.entries( header ).map(
256
+
257
+ e => [...e].reverse()
258
+
259
+ ) );
260
+
261
+ const theadArray = Array.from( $('thead th') ).map(
262
+
263
+ e => e.textContent
264
+
265
+ );
266
+
267
+ const flattenJSON = json.map( e =>
268
+
269
+ e.bodies.map( row => {
270
+
271
+ Object.assign( row, e );
272
+
273
+ return row;
274
+
275
+ } )
276
+
277
+ ).flat();
278
+
279
+
280
+
281
+ const tbody = flattenJSON.map( row=>`
282
+
283
+ <tr>
284
+
285
+ ${ theadArray.map( head => `
286
+
287
+ <td>${ row[ reverseHeader.get( head ) ] }</td>
288
+
289
+ `).join('') }
290
+
291
+ </tr>
292
+
293
+ `).join('');
294
+
295
+
296
+
297
+ $('tbody').html( tbody );
298
+
299
+ ```