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

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

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

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

Q&A

0回答

565閲覧

[JavaScript]バックエンドからデータを再帰的に取得したい

sabx

総合スコア200

JavaScript

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

0グッド

1クリップ

投稿2020/11/29 10:15

聞きたいこと

バックエンドから下のような形式のコメントのデータを取得しようと思っています。

{ id: 1234, context: "コメント1", children: [ 1235, 1236, 1237 ] }

idはコメントを一意に特定するためのid, contextはコメントの内容、childrenにはそのコメントに対してのコメントのidが入ります。

ただ、特定のコメントに対してのコメントに対してのコメントも存在し、それらも取得したいと思っています。
(上の例だと、コメントID: 1234に対してのコメントである1235に対してのコメントもある)

一旦自力で下のように実装してみました。

JavaScript

1 2: 3 4const fetchComments = (comment) => { 5 if (comment.children) { 6 return fetchItems(comment.children).then((c) => { 7 return fetchComments(c); 8 }) 9 } 10}; 11 12const fetchItems = (comments) => { 13 return Promise.all(comments.map(comment => fetchItem(comment)) 14} 15 16const fetchItem = (comment) => { 17 // バックエンドと疎通して、comment 1件を取得する処理 18 return new Promise... 19} 20 21: 22const comment = 1234 23fetchComments(comment).then(res => console.log(res)); 24

最終的に fetchComments を実行した際に、res 変数にすべて取得してきたコメント情報が配列のような形式で代入されていればいいのですが、undefinedになってしまいます。

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

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

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

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

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

miyabi_takatsuk

2020/11/29 10:24

comment.children がない時に値を返してないからだと思います。 そこらへんをまず、値がない場合にどう処理するか、をやってみるとよいかと。 そこらへん整備してもまだundefinedになるなら、またコメント下さい。
yambejp

2020/11/30 00:17

状況説明をお願いします apiにid=1234をなげると例示のjsonが帰るのでそこからchildrenにある 値を利用して再度idを投げるということですか? 結果としてcontextを一次配列で保持すればいいのでしょうか?
sabx

2020/11/30 02:40

> yambejp コメントありがとうございます。 > apiにid=1234をなげると例示のjsonが帰るのでそこからchildrenにある 値を利用して再度idを投げるということですか? はい、そのとおりです。 > 結果としてcontextを一次配列で保持すればいいのでしょうか? 結果として全てのコメントを、コメントオブジェクトの形式(質問に記載のid: 1234...のやつです)で一時配列に格納できればと思っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問