質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

551閲覧

多次元配列を重複しない形で結合したいです

3dkoi

総合スコア14

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/04/08 01:59

編集2021/04/08 02:12

多次元配列を重複しない形で結合したいです

二つの配列オブジェクトを重複しない形でマージしたいです。

Express.jsでデータ加工しております。
マージする処理環境はExpress.jsでの処理と考えていますが、フロントのVue.js環境でもよければと思い、
jsファイルでexportしております。
配列の内容ですが、userData.jsでは、氏名やグループのデータと受け持ったタスク名等を重複しない形で持っています。
Reduce等で作成してきました。
tasks.jsではユーザーが受け持ったタスクの実績をオーダーコードごとにもっています。
最終的に一つの配列オブジェクトにしたいのですが、ユーザーごとに重複しないデータをもちつつ、重複する実績データをもつにはどのようにすればよいでしょうか。
試したことはuser_idが一致するならマージするといったやり方で、一方の配列はmap関数処理内でスプレッド構文で展開し、その中で、もう片方の配列をmapにかけuser_id同士が一致するといった処理をfindでみつけると方法です。
このやりかたではデータを落としてしまいます。
また、reduce関数でprev[tasks] = (prev[tasks] || []).concat({ object })でvalueごとにまとめて、Object.entriesでkey,valuesとして処理するといったことを試しました。
お分かりになる方がいらしゃったらご協力おねがい致します。

以下コードです

javascript

1// userData.js 2 3export default 4 [ 5 { // user_id: 1 6 user_id: 1, 7 order_name: [ 8 "AA作業", 9 "BB作業" 10 ], 11 users: { 12 user_id: 1, 13 group_name: "teamA", 14 user_full_name: "DoAsInfinity" 15 }, 16 order_code: { 17 user_id: 1, 18 order_code: [ 19 "110", 20 "111" 21 ] 22 } 23 }, 24 { // user_id: 2 25 user_id: 2, 26 order_name: [ 27 "AA作業" 28 ], 29 users: { 30 user_id: 2, 31 group_name: "teamA", 32 user_full_name: "ezDoDance" 33 }, 34 order_code: { 35 user_id: 2, 36 order_code: [ 37 "110" 38 ] 39 }, 40 }, 41 { // user_id: 3 42 user_id: 3, 43 order_name: [ 44 "CC開発" 45 ], 46 users: { 47 user_id: 3, 48 group_name: "teamB", 49 user_full_name: "GetWild" 50 }, 51 order_code: { 52 user_id: 3, 53 order_code: [ 54 "111", 55 "112" 56 ] 57 } 58 } 59 ] 60

javascript

1// tasks.js 2export default 3 [ 4 [ // 同一 user_id 5 [ // 同一order_code: 110 6 { 7 input_time: 4, 8 count: 1, 9 user_id: 1, 10 user_full_name: 'DoAsInfinity', 11 section_name: "z事業部", 12 order_code: "110", 13 daily_day: "2021-01-04" 14 }, 15 { 16 input_time: 7, 17 count: 1, 18 user_id: 1, 19 user_full_name: 'DoAsInfinity', 20 section_name: "z事業部", 21 order_code: "110", 22 daily_day: "2021-01-15" 23 } 24 ], 25 [ // 同一order_code: 111 26 { 27 input_time: 1, 28 count: 1, 29 user_id: 1, 30 user_full_name: 'DoAsInfinity', 31 section_name: "z事業部", 32 order_code: "111", 33 daily_day: "2021-01-04" 34 }, 35 { 36 input_time: 5, 37 count: 1, 38 user_id: 1, 39 user_full_name: 'DoAsInfinity', 40 section_name: "z事業部", 41 order_code: "111", 42 daily_day: "2021-01-05" 43 } 44 ] 45 ], 46 [ // 同一 user_id 47 [ // 同一 order_code 48 { 49 input_time: 8, 50 count: 1, 51 user_id: 2, 52 user_full_name: "ezDoDance", 53 section_name: "Z事業部", 54 order_code: "110", 55 daily_day: "2021-01-04" 56 }, 57 { 58 input_time: 8, 59 count: 1, 60 user_id: 2, 61 user_full_name: "ezDoDance", 62 section_name: "Z事業部", 63 order_code: "110", 64 daily_day: "2021-01-05" 65 }, 66 { 67 input_time: 8, 68 count: 1, 69 user_id: 2, 70 user_full_name: "ezDoDance", 71 section_name: "Z事業部", 72 order_code: "110", 73 daily_day: "2021-01-06" 74 } 75 ] 76 ], 77 [ // 同一 user_id 78 [ // 同一 order_code 79 { 80 input_time: 4, 81 count: 2, 82 user_id: 3, 83 user_full_name: "GetWild", 84 section_name: "Z事業部", 85 order_code: "111", 86 daily_day: "2021-01-04" 87 }, 88 { 89 input_time: 2, 90 count: 1, 91 user_id: 3, 92 user_full_name: "GetWild", 93 section_name: "Z事業部", 94 order_code: "111", 95 daily_day: "2021-01-07" 96 }, 97 { 98 input_time: 3, 99 count: 2, 100 user_id: 3, 101 user_full_name: "GetWild", 102 section_name: "Z事業部", 103 order_code: "111", 104 daily_day: "2021-01-13" 105 } 106 ], 107 [ 108 { 109 input_time: 2.5, 110 count: 2, 111 user_id: 3, 112 user_full_name: "GetWild", 113 section_name: "Z事業部", 114 order_code: "112", 115 daily_day: "2021-01-04" 116 } 117 ] 118 ] 119 ] 120

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FKM

2021/04/08 04:25

制御部分がわからないとどうにもなりません。
3dkoi

2021/04/08 04:32

コメントありがとうございます。 コメントの内容を理解したいです。 どのようにご回答したらよろしいでしょうか。 マージする際の条件ということでしょうか?
FKM

2021/04/08 05:30

算出プロパティやメソッド、あるいはテンプレートのvディレクティブ辺りを見ないとなんとも言えないってことです。
3dkoi

2021/04/08 08:21

おっしゃっている内容を理解しました。 お答えありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問