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

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

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

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

Q&A

解決済

3回答

174閲覧

【JavaScript】ある配列を作りたい

eroeronnnnnn

総合スコア10

JavaScript

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

0グッド

0クリップ

投稿2020/05/19 06:52

編集2020/05/19 07:25

前提・実現したいこと

JavaScriptである配列を作りたいです。

該当のソースコード

javascript

1const data1 = [ 2 { 3 "2020/06/01": { 4 "A": 4, 5 "A_price": 4000, 6 "B": 2, 7 "B_price": 200, 8 } 9 } 10] 11const data2 = [ 12 { 13 date: "2020/06/01", 14 total_price: 4200, 15 price_detail: [ 16 { name: "Aさん", price: 4000, num: 4 }, 17 { name: "Bさん", price: 200, num: 2 } 18 ] 19 } 20]

上記のようなデータから以下のような配列を作りたいのですが、良い方法が思いつきません。

javascript

1const result = [ 2 { 3 date: "2020/06/01", 4 id: "A", 5 name: "Aさん", 6 price: 4000, 7 num: 4 8 }, 9 { 10 date: "2020/06/01", 11 id: "B", 12 name: "Bさん", 13 price: 200, 14 num: 2 15 } 16] 17

「data1」と「data2」のデータ構造そのものには、「result」配列内の「id」のような概念が存在しないのですが、ここでは、「id」というプロパティ名で、「A」ならば「Aさん」、「B」ならば「Bさん」のように、マッピングしたいです。
上記のresult配列を作る良い案等がございましたら、ご教授願えますと幸いです。

※ 追記
@jun68yktさんのご回答から上記の例の場合、「data2」の情報のみで「result」配列が作成可能でした。。。
ご回答ありがとうございました。

また、下記のように、もし「data1」にしかない情報を「result」配列に格納したい場合は、
どのような方法が望ましいでしょうか?

javascript

1const data1 = [ 2 { 3 "2020/06/01": { 4 "A": 4, 5 "A_price": 4000, 6 "A_tel": 09011111111 7 "B": 2, 8 "B_price": 200, 9 "B_tel": 08011111111 10 } 11 } 12] 13const data2 = [ 14 { 15 date: "2020/06/01", 16 total_price: 4200, 17 price_detail: [ 18 { name: "Aさん", price: 4000, num: 4 }, 19 { name: "Bさん", price: 200, num: 2 } 20 ] 21 } 22] 23 24const result = [ 25 { 26 id: "A", 27 name: "Aさん", 28 price: 4000, 29 num: 4, 30 tel: 09011111111 31 }, 32 { 33 id: "B", 34 name: "Bさん", 35 price: 200, 36 num: 2, 37 tel: 08011111111 38 } 39]

ご回答宜しくお願い致します。。。

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

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

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

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

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

Lhankor_Mhy

2020/05/19 06:58

"B": 2, "A_price": 200, ↑これは間違いではありませんか?
eroeronnnnnn

2020/05/19 07:01

ご指摘ありがとうございます。上記認識にお間違いございません。恐縮ながら修正いたしました。
guest

回答3

0

ベストアンサー

こんにちは

ぱっと見だと、resultを作るのに必要な情報は、 data2[0] の中に全てあると思われました。
それと、id の作り方として、 "Aさん" の id は "A""Bさん"のidは "B" という感じで、単純に nameの末尾の さんを削除すればid になるのでしたら、以下でよいかと思われます。

javascript

1const result = data2[0].price_detail.map(e => ({ 2 date: data2[0].date, 3 ...e, 4 id: e.name.replace(/さん$/, '') 5}));

もし result を作るのに、data1 も必要なのだとすれば、どのように必要なのかを、ご質問に追記いただくと助かります。

以上、参考になれば幸いです。

投稿2020/05/19 07:09

jun68ykt

総合スコア9058

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

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

eroeronnnnnn

2020/05/19 07:26

ご回答ありがとうございます。 確かに、`data2[0]`に必要な情報が揃ってましたね。。。 ちょっと例題が悪かったです、すみません。 IDの作成方法参考になりました!ありがとうございます。 また、質問のほうに追記したのですが、「data1」の値も必要な場合で、「result」に含めたい場合の方法とかご存じでしたら、ご教授願えますと幸いです。
eroeronnnnnn

2020/05/20 02:27

ご回答ありがとうございます。とても参考になりました! 見事にIDやtelを連携させらていて凄いです! ベストアンサーとさせて頂きます。
jun68ykt

2020/05/20 07:33

どういたしまして???? > とても参考になりました! とのことでよかったです????
guest

0

ちょっとサンプルが少ないのと、data1とdata2をどう紐づけるか
条件も足りないようです

javascript

1const result=data2[0].price_detail.map(x=>{ 2 return Object.assign(x,{ 3 date:data2[0].date, 4 name:Object.entries(data1[0][data2[0].date]).filter(y=>y[1]==x.num).map(x=>x[0])[0], 5 }); 6}); 7console.log(result);

投稿2020/05/19 07:46

yambejp

総合スコア116724

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

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

eroeronnnnnn

2020/05/20 02:25

ご回答ありがとうございます。 entriesやassignでのオブジェクト操作参考になります! ありがとうございます。
guest

0

単なる変数であるなら、const(定数)にする必要はないかと思います。

このデータ構造なら、jsonが扱いやすいかと。
【JavaScript入門】JSONの作成とparse() / stringify()の使い方!

投稿2020/05/19 07:00

kaputaros

総合スコア1844

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問