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

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

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

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

Q&A

2回答

866閲覧

変数から値を抽出したい

inukujira

総合スコア130

JavaScript

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

0グッド

0クリップ

投稿2020/10/06 01:27

すみません。
教えてください。

抽出対象のkeyを元にfiled_typeに一致するものを抽出するにはどのようにすれば良いでしょうか?

【サンプルデータ】
https://stackblitz.com/edit/js-zvkwwn

javascript

1// 抽出対象 2const data = { 3 birthday: "200X/01/01", 4 tel: "012-0123-5678", 5 name: "ここに名前", 6} 7 8// 抽出したいもの 9const resforms = [ 10 { 11 filed_type: "name", 12 formid: "V3DBs1xE6GIK", 13 }, 14 { 15 filed_type: "tel", 16 formid: "SJpTA1mOfcK3", 17 }, 18 { 19 filed_type: "birthday", 20 formid: "zLK-dokxmIeo", 21 }, 22]

【求める結果】

javascript

1// dataのkeyから一致するfiled_typeを抽出したよ 2items = [ 3 { 4 formid: "V3DBs1xE6GIK", 5 name: "ここに名前", 6 }, 7 { 8 formid: "SJpTA1mOfcK3", 9 name: "012-0123-5678", 10 }, 11 { 12 formid: "zLK-dokxmIeo", 13 name: "200X/01/01", 14 }, 15]

filterを使って処理しようとしてもdataがただの配列なのでうまく扱えず何時間もこの問題に格闘しています。
どうかご教示くださいませ。><;

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

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

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

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

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

m.ts10806

2020/10/06 01:29

何時間も格闘したのは良いとして、調べたり試したりしたことを何も書いてなければ他者には何もやったことは伝わりませんので、具体的に記載してください。 時間だけ書く効果はゼロです。
guest

回答2

0

どのようにすれば良いでしょうか?

基本は 反復処理です。

object に対して for in のような反復処理があります。

javascript

1console.group("test for-in"); 2for (let key in data ) { 3 console.log( key, data[key] ); 4} 5console.groupEnd();

dataがただの配列なので

違います。リテラルを確認してください(オブジェクトリテラルなので、配列ではありません)。

また、配列の反復処理(filter)が理解できているなら、オブジェクトを配列化する3つのメソッド再確認してください。

for of を使う。

javascript

1console.group("test for-of"); 2for (let [key, val] of Object.entries(data) ) { 3 console.log( key, val ); 4} 5console.groupEnd();

配列化できれば、反復処理を Arrayのメソッドで対応できます。

javascript

1console.group("test forEach"); 2Object.entries(data).forEach( ([filed_type,formid]) => { 3 console.log({filed_type,formid}) 4}); 5console.groupEnd();

ご質問の items を取り出すには、reduce() が最もスマートに記述できるのではないでしょうか。

投稿2020/10/06 02:03

AkitoshiManabe

総合スコア5434

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

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

0

配列なら、最初から順番に配列のナカミを読み出していき、あなたのその条件にあっているかどうかをチェックしていけばいいという話となります

一度これでコードを組んでみてください

投稿2020/10/06 01:31

y_waiwai

総合スコア88042

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問