前提・実現したいこと
下記の配列で重複チェックを行い処理を行いたいのですが、
JavaScript
1let Records = [ 2 { 3 A: { type: "DROP_DOWN", value: null }, 4 B: { type: "NUMBER", value: "100" }, 5 C: { type: "DROP_DOWN", value: null }, 6 D: { type: "DROP_DOWN", value: "TEST1" }, 7 E: { type: "SINGLE_LINE_TEXT", value: "" }, 8 F: { type: "SINGLE_LINE_TEXT", value: "TEST2" }, 9 G: { type: "SINGLE_LINE_TEXT", value: "5" }, 10 H: { type: "DATE", value: "2019-09-01" }, 11 I: { type: "DROP_DOWN", value: "TEST3" }, 12 J: { type: "NUMBER", value: "10000" }, 13 K: { type: "SINGLE_LINE_TEXT", value: "001" } 14 }, 15 { 16 A: { type: "DROP_DOWN", value: null }, 17 B: { type: "NUMBER", value: "10000" }, 18 C: { type: "DROP_DOWN", value: null }, 19 D: { type: "DROP_DOWN", value: "TEST4" }, 20 E: { type: "SINGLE_LINE_TEXT", value: "" }, 21 F: { type: "SINGLE_LINE_TEXT", value: "TEST5" }, 22 G: { type: "SINGLE_LINE_TEXT", value: "5" }, 23 H: { type: "DATE", value: "2019-09-01" }, 24 I: { type: "DROP_DOWN", value: "TEST6" }, 25 J: { type: "NUMBER", value: "10000" }, 26 K: { type: "SINGLE_LINE_TEXT", value: "002" } 27 }, 28 { 29 A: { type: "DROP_DOWN", value: null }, 30 B: { type: "NUMBER", value: "1000" }, 31 C: { type: "DROP_DOWN", value: null }, 32 D: { type: "DROP_DOWN", value: "TEST7" }, 33 E: { type: "SINGLE_LINE_TEXT", value: "" }, 34 F: { type: "SINGLE_LINE_TEXT", value: "TEST8" }, 35 G: { type: "SINGLE_LINE_TEXT", value: "5" }, 36 H: { type: "DATE", value: "2019-09-01" }, 37 I: { type: "DROP_DOWN", value: "TEST9" }, 38 J: { type: "NUMBER", value: "10000" }, 39 K: { type: "SINGLE_LINE_TEXT", value: "001" } 40 } 41];
①重複しているものを除いて抽出(K
のvalue値で重複チェックする)
②その後、重複したものは①のLを追加し配列に格納していく
といった方法をとりたく、最終的には下記の実現を望んでいます。
JavaScript
1let Records = [ 2 { 3 A: { type: "DROP_DOWN", value: null }, 4 B: { type: "NUMBER", value: "100" }, 5 C: { type: "DROP_DOWN", value: null }, 6 D: { type: "DROP_DOWN", value: "TEST1" }, 7 E: { type: "SINGLE_LINE_TEXT", value: "" }, 8 F: { type: "SINGLE_LINE_TEXT", value: "TEST2" }, 9 G: { type: "SINGLE_LINE_TEXT", value: "5" }, 10 H: { type: "DATE", value: "2019-09-03" }, 11 I: { type: "DROP_DOWN", value: "TEST3" }, 12 J: { type: "NUMBER", value: "10000" }, 13 K: { type: "SINGLE_LINE_TEXT", value: "001" }, 14 //追加部分 15 L: [{ 16 A: { type: "DROP_DOWN", value: null }, 17 B: { type: "NUMBER", value: "1000" }, 18 C: { type: "DROP_DOWN", value: null }, 19 D: { type: "DROP_DOWN", value: "TEST7" }, 20 E: { type: "SINGLE_LINE_TEXT", value: "" }, 21 F: { type: "SINGLE_LINE_TEXT", value: "TEST8" }, 22 G: { type: "SINGLE_LINE_TEXT", value: "5" }, 23 H: { type: "DATE", value: "2019-09-03" }, 24 I: { type: "DROP_DOWN", value: "TEST9" }, 25 J: { type: "NUMBER", value: "10000" }, 26 K: { type: "SINGLE_LINE_TEXT", value: "001" } 27 }] 28 }, 29 { 30 A: { type: "DROP_DOWN", value: null }, 31 B: { type: "NUMBER", value: "10000" }, 32 C: { type: "DROP_DOWN", value: null }, 33 D: { type: "DROP_DOWN", value: "TEST4" }, 34 E: { type: "SINGLE_LINE_TEXT", value: "" }, 35 F: { type: "SINGLE_LINE_TEXT", value: "TEST5" }, 36 G: { type: "SINGLE_LINE_TEXT", value: "5" }, 37 H: { type: "DATE", value: "2019-09-03" }, 38 I: { type: "DROP_DOWN", value: "TEST6" }, 39 J: { type: "NUMBER", value: "10000" }, 40 K: { type: "SINGLE_LINE_TEXT", value: "002" }, 41 } 42];
試したこと
JavaScript
1let results = Records.reduce((res, cur) => { 2 for (let i = 0, s = res.length, name = cur.K.value, object; i < s; ++i) { 3 object = res[i]; 4 if (object.K.value === name) {return res;} 5 } 6 res.push(cur); 7 return res; 8}, []);
これで、上記の①の部分は出来ていると思うのですが②の部分をどの様にしていけば良いか悩んでいます。ご教授頂けましたら幸いです。
回答3件
あなたの回答
tips
プレビュー