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

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

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

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

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

Q&A

解決済

1回答

1428閲覧

javascriptでjsonの存在をチェックしたい

masann

総合スコア37

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

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

0グッド

1クリップ

投稿2021/10/08 14:05

javascriptでjsonの特定の場所にキーが存在するかを確認し無ければ配列をずらしスキップするコードとして以下を作成しました。

//json.result.items[i]の中に「sampleMovieURL」というキーが存在するか確認するコード if('sampleMovieURL' in json.result.items[i]){ //あるなら通過 }else{ //ないなら1加算して通過 i++; }

このコードは動きますが連続して存在しない時に「i++;」をしているだけなので加算後の「json.result.items[i]」に
「sampleMovieURL」が存在しない場合でも処理が継続しエラーになり途中で停止してしまいます。

どうにか「whileで無いことを確認して無い限り加算し続ける」などで解決したいのですがうまくいきません。なにか方法はあるでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

「whileで無いことを確認して無い限り加算し続ける」

それでいいと思います。

js

1while (!('sampleMovieURL' in json.result.items[i]) && 2 i < json.result.items.length) { 3 i++; 4}

もし質問文にあるコードがループの一部だと、continueが使えます。できるだけ周辺のコードも開示してください。

js

1for (let i = 0; i < json.result.items.length; ++i) { 2 if (!('sampleMovieURL' in json.result.items[i])) 3 continue; 4 // 通過時の処理 5}

js

1for (let item of json.result.items) { 2 if (!('sampleMovieURL' in item)) 3 continue; 4 // 通過時の処理 5}

フィルタをかけて、存在する要素だけに絞っておくのも簡単かもしれません。

js

1let filteredItems = json.result.items.filter( 2 item => 'sampleMovieURL' in item);

投稿2021/10/08 14:12

編集2021/10/08 15:07
int32_t

総合スコア21097

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

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

masann

2021/10/11 15:25

回答ありがとうございます。お察しの通りfor分の最初に存在するパーツです。ご紹介いただいた、どのJSでも正常に動作しエラーを解決できました。本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.45%

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

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

質問する

関連した質問