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

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

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

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

JavaScript

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

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

解決済

1回答

798閲覧

新しい配列を作りたいです

inukujira

総合スコア130

Node.js

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

JavaScript

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

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

0クリップ

投稿2020/12/22 10:19

すみません、教えてください。
前回似たような質問をしていてわからないので教えてください。

以下、変換前の配列があります。

Javascript

1const data = { 2 primaryAccount: "A", 3 primaryName: "Aさん", 4 primaryEmail: "a@a.com", 5 secondaryAccount: "B", 6 secondaryName: "Bさん", 7 secondaryEmail: "b@b.com", 8 tertiaryAccount: "C", 9 tertiaryName: "Cさん", 10 tertiaryEmail: "c@c.com" 11};

この配列を以下のような配列するにはどのようにすれば良いでしょうか?

Javascript

1const result = [ 2 { id: "A", name: "Aさん", email: "a@a.com" }, 3 { id: "B", name: "Bさん", email: "b@b.com" }, 4 { id: "C", name: "Cさん", email: "c@c.com" } 5];

私が試していたのは以下のコードで、文字列を置換してkey名を変更しようと試みていたんですがなかなかうまくいかず困っています..。

Javascript

1 // 変換前のデータ 2 const data = { 3 primaryAccount: "A", 4 primaryName: "Aさん", 5 primaryEmail: "a@a.com", 6 secondaryAccount: "B", 7 secondaryName: "Bさん", 8 secondaryEmail: "b@b.com", 9 tertiaryAccount: "C", 10 tertiaryName: "Cさん", 11 tertiaryEmail: "c@c.com" 12 }; 13 // 変換 14 let r = ["primary", "secondary", "tertiary"].map(a => 15 ["Account", "Name", "Email"].reduce( 16 (b, c) => ((b[c] = data[a + c]), b), 17 {} 18 ) 19 ); 20 console.log(r);

大変、申し訳ございませんがどのように処理すれば良いのかご教示頂ければと思います。

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

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

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

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

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

guest

回答1

0

ベストアンサー

プロパティ名が違うだけなので、変換用のリストを作ればいけると思います。

js

1// 変換前のデータ 2const data = { 3 primaryAccount: "A", 4 primaryName: "Aさん", 5 primaryEmail: "a@a.com", 6 secondaryAccount: "B", 7 secondaryName: "Bさん", 8 secondaryEmail: "b@b.com", 9 tertiaryAccount: "C", 10 tertiaryName: "Cさん", 11 tertiaryEmail: "c@c.com" 12}; 13 14const dic = { 15 Account: "id", 16 Name: "name", 17 Email: "email" 18}; 19 20// 変換 21let r = ["primary", "secondary", "tertiary"].map(a => 22 ["Account", "Name", "Email"].reduce( 23 (b, c) => ((b[dic[c]] = data[a + c]), b), 24 {} 25 ) 26); 27console.log(r);
[ {id: "A", name: "Aさん", email: "a@a.com"} {id: "B", name: "Bさん", email: "b@b.com"} {id: "C", name: "Cさん", email: "c@c.com"} ]

投稿2020/12/22 10:26

nekoniki

総合スコア2411

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

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

inukujira

2020/12/22 11:11

ありがとうございました!無事解決することができました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問