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

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

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

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

Q&A

解決済

3回答

196閲覧

多次元配列で値が一致するものだけを取り出す方法

bws

総合スコア98

JavaScript

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

0グッド

0クリップ

投稿2019/06/10 01:18

編集2019/06/10 01:23

以下のような配列で、categorieswordpress_idの値がたとえば40のものだけ取り出して新しい配列を作るにはどのようにしたらよいでしょうか?
categoriesが配列になっている為うまくいきません、アドバイスお願いします。

{ "data": { "allWordpressPost": { "edges": [ { "node": { "title": "1行分しか想定されていない見出しのデザインだと文字がはみ出してしまってあら大変。ものすごく長い日本語のタイトルが付いた記事の表示テストです。複数行になっても問題ないデザインだといいですね。あと前後の記事へのリンクを出力している場合や、パンくずリストを実装している場合なども表示にズレがないか確認しておきましょう。", "wordpress_id": 2069, "categories": [ { "wordpress_id": 58, "name": "極端な例" } ] } }, { "node": { "title": "マークアップ: HTML タグとフォーマット", "wordpress_id": 1178, "categories": [ { "wordpress_id": 40, "name": "マークアップ" } ] } }, { "node": { "title": "マークアップ: 画像の配置", "wordpress_id": 1177, "categories": [ { "wordpress_id": 40, "name": "マークアップ" } ] } }, { "node": { "title": "マークアップ: テキスト配置", "wordpress_id": 1176, "categories": [ { "wordpress_id": 40, "name": "マークアップ" } ] } }, ・・・省略 ] } } }

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

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

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

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

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

guest

回答3

0

categoriesが配列になっていますが要素が必ず1つしかないのでしょうか?

※調整

javascript

1var a={ 2 "data": { 3 "allWordpressPost": { 4 "edges": [ 5 { 6 "node": { 7 "title": "1行分しか想定されていない見出しのデザインだと文字がはみ出してしまってあら大変。ものすごく長い日本語のタイトルが付いた記事の表示テストです。複数行になっても問題ないデザインだといいですね。あと前後の記事へのリンクを出力している場合や、パンくずリストを実装している場合なども表示にズレがないか確認しておきましょう。", 8 "wordpress_id": 2069, 9 "categories": [ 10 { 11 "wordpress_id": 58, 12 "name": "極端な例" 13 } 14 ] 15 } 16 }, 17 { 18 "node": { 19 "title": "マークアップ: HTML タグとフォーマット", 20 "wordpress_id": 1178, 21 "categories": [ 22 { 23 "wordpress_id": 40, 24 "name": "マークアップ" 25 } 26 ] 27 } 28 }, 29 { 30 "node": { 31 "title": "マークアップ: 画像の配置", 32 "wordpress_id": 1177, 33 "categories": [ 34 { 35 "wordpress_id": 40, 36 "name": "マークアップ" 37 } 38 ] 39 } 40 }, 41 { 42 "node": { 43 "title": "マークアップ: テキスト配置", 44 "wordpress_id": 1176, 45 "categories": [ 46 { 47 "wordpress_id": 40, 48 "name": "マークアップ" 49 } 50 ] 51 } 52 }, 53 ] 54 } 55 } 56} 57var b={"data":{"allWordpressPost":{"edges":null}}}; 58b.data.allWordpressPost.edges=a.data.allWordpressPost.edges.filter( 59 x=>x.node.categories.filter( 60 y=>y.wordpress_id==40 61 ).length==1 62); 63console.log(b);

投稿2019/06/10 01:36

編集2019/06/10 02:17
yambejp

総合スコア114784

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

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

bws

2019/06/10 02:02

ごめんなさい、複数ある場合もあります。一つの場合はこれが簡単で良さそうです、ありがとうございます!
yambejp

2019/06/10 02:03

複数ある場合は ・1つでも合致すればいいのでしょうか? ・すべてが合致しないといけないのでしょうか? ・合致するものだけ抜き出すのでしょうか?
bws

2019/06/10 02:08

ひとつだけ合致する場合を想定していました。説明不足でもうしわけないです!
yambejp

2019/06/10 02:19

解決済みのようなので今更ですが、 categoriesにオブジェクトが複数ある場合、wordpress_id=40が 1つだけのものを拾う処理を追記しておきました
bws

2019/06/10 02:23

もう少し考えて質問したいと思いました、丁寧にありがとうございます!
guest

0

変数objに質問内のデータが入っているとした場合です。

js

1obj.data.allWordpressPost.edges.reduce( 2 (ary, edge) => { 3 ary.push(...edge.node.categories.filter(cat => cat.wordpress_id == 40)) 4 return ary; 5 }, [] 6);

投稿2019/06/10 01:39

ryo_y

総合スコア244

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

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

bws

2019/06/10 02:05

reduceを使うとわかりやすいですね、積極的に使っていきたいと思いました!ありがとうございます!
guest

0

ベストアンサー

質問にあるオブジェクトが obj という変数に入っているとして、

js

1const filteredEdges = obj.data.allWordpressPost.edges.filter(edge => edge.node.categories.filter(category => category.wordpress_id === 40).length);

で取り出せると思います。

投稿2019/06/10 01:29

YukiYamashina

総合スコア1011

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

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

bws

2019/06/10 02:03

ありがとうございます、バッチリ取り出すことができました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問