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

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

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

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

TypeScript

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

Q&A

解決済

3回答

508閲覧

連想配列のプロパティを取り出して、配列に並べ替えたい。

takochan1192

総合スコア100

JavaScript

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

TypeScript

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

0グッド

0クリップ

投稿2020/08/26 00:16

連想配列のプロパティを取り出して並び替えを行いたいと思っています。
下記のコードのarray1 と array2の連想配列の'name'要素だけを取り出し、

array3 = [{name:'john'},{name:'Bob'},{name:'Jen'},{name:'Mera'},]
のような形したいと思っています。
下記のコードのようにcocatメソッドを使ってしまうと、

0: {name: "john", age: 25}
1: {name: "Bob", age: 33}
2: {name: "Jen", age: 35, id: 1}
3: {name: "Mera", age: 31, id: 2}

上記のように、全ての要素が配列に入ってしまいます。
どなたかご教示いただけませんでしょうか?

Typescript

1const array1 = [{name:'john',age:25},{name:'Bob',age:33}]; 2const array2 = [{name:'Jen',age:35,id:1},{name:'Mera',age:31,id:2}]; 3const array3 = array1.concat(array2); 4console.log(array3) 5

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

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

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

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

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

guest

回答3

0

ベストアンサー

concatした後のarray3からmap()nameだけを抜き出せばいけると思います。

javascript

1const array1 = [{name:'john',age:25},{name:'Bob',age:33}]; 2const array2 = [{name:'Jen',age:35,id:1},{name:'Mera',age:31,id:2}]; 3const array3 = array1.concat(array2); 4const array4 = array3.map((d) => {return { name : d.name } }); 5console.log(array4)

投稿2020/08/26 00:19

nekoniki

総合スコア2409

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

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

takochan1192

2020/08/26 00:28

ありがとうございます!解決できました!!
nekoniki

2020/08/26 00:57

解決して何よりです。 自分が記載したコードより、他の方の回答の方がワンライナーでスマートに書かれているので、配列操作の学習のためなら他の方のコードを参考にするとよいです。 より今風に書くならconcatするより、yambejpさんが書いたように[]で配列化した後にflat()するか、下記のようにスプレッド演算子で展開するかだと思います。 const array3 = [...array1, ...array2];
takochan1192

2020/08/26 01:02

ありがとうございます。ご教示いただきまして本当に助かりました。 皆様のご回答を参考にさせていただきます。
guest

0

mapはでてますので別解

javascript

1const array3 = [array1,array2].flat().reduce((x,{name})=>(x.push({name}),x),[]);

投稿2020/08/26 00:36

yambejp

総合スコア114843

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

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

takochan1192

2020/08/26 00:44

ご回答ありがとうございます!ネストになっていた連想配列の並び替えで非常に困っておりまして、本当に助かります。flatメソッドなどは全く知りませんでした。こんな方法があるとは、、、、、、、、 驚きが隠せません。本当にありがとうございます!
guest

0

こんにちは
concat して得られる配列に、map を使って、各要素をname のみを持つオブジェクトにすればよいかと思います。以下、その一例です。

diff

1- const array3 = array1.concat(array2); 2+ const array3 = array1.concat(array2).map(({ name }) => ({ name }));

投稿2020/08/26 00:27

jun68ykt

総合スコア9058

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

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

takochan1192

2020/08/26 00:29

ありがとうございます!ご丁寧にご回答いただきまして本当にありがとうございます!
jun68ykt

2020/08/26 00:35

どういたしまして。解決したようで、よかったです????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問