• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javascript 配列内の条件抽出方法)

JavaScript配列内の条件抽出方法

このQ&Aのポイント
  • JavaScript配列内の条件抽出方法について教えてください。
  • 配列内にある特定の条件をチェックして、結果に応じて表示する方法について教えてください。
  • 配列の要素を順番に表示し、最後まで表示したら先頭に戻る方法について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

>最初に2秒まってから「2番目」が表示されるようです ああ、そりゃそうですね。失礼しました。 関数化して最初に呼び出してからあとは繰り返し処理をすればいいです。 <script> var counter=0; mozi = new Array(); mozi[0]= new Array("off","1番目"); mozi[1]= new Array("on","2番目"); mozi[2]= new Array("on","3番目"); mozi[3]= new Array("on","4番目"); mozi2=new Array(); for(var i in mozi){ if(mozi[i][0]=="on") mozi2.push(mozi[i][1]); } function doCount(){ document.getElementById("hoge").innerHTML=mozi2[counter]; counter=(counter<mozi2.length -1)?counter+1:0; } window.onload=function(){ doCount(); setInterval(function(){doCount()},2000); } </script> <div id="hoge"></div>

casionet
質問者

お礼

回答ありがとうございました。 希望の動作が実現できました。大変助かりました。 こちらをベストアンサーとさせていただきます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.2

……なんかフォームの操作によってmojiの内容が変わりそうに見えるな…… もしその場合、#1様の方法では対応できなくなります。 以下のようにしてください。 (無論、ページを開いた時点でmojiの内容が決まっているならば#1様の方法のほうがコードが短く簡易です) <script> var counter=0; mozi = new Array(); mozi[0]= new Array("off","1番目"); mozi[1]= new Array("on","2番目"); mozi[2]= new Array("on","3番目"); mozi[3]= new Array("on","4番目"); // 現在のカウンターの次にonになっている番号を探す // 見つからない(全部offになっている)場合は現在のカウンターの値を返す function next() { var i; for (i = counter + 1; i < mozi.length; i++){ if (moji[i][0] == "on") return i; } for (i = 0; i < counter; i++){ if (moji[i][0] == "on") return i; } return counter; } window.onload=function(){ setInterval(function(){document.getElementById("hoge").innerHTML=mozi[counter][1];counter=next()},3000); } </script> <div id="hoge"></div>

casionet
質問者

お礼

回答ありがとうございます。 実際に動作を確認したところ、 3秒wait→1番目→2番目→3番目→4番目→2番目...となり、 最初に「1番目」が表示されてしまうようです。

全文を見る
すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

予め条件に併せて抽出しておき、あとはグローバル変数をカウンタにすればよいでしょう <script> var counter=0; mozi = new Array(); mozi[0]= new Array("off","1番目"); mozi[1]= new Array("on","2番目"); mozi[2]= new Array("on","3番目"); mozi[3]= new Array("on","4番目"); mozi2=new Array(); for(var i in mozi){ if(mozi[i][0]=="on") mozi2.push(mozi[i][1]); } window.onload=function(){ setInterval(function(){document.getElementById("hoge").innerHTML=mozi2[counter];counter=(counter<mozi2.length -1)?counter+1:0},2000); } </script> <div id="hoge"></div>

casionet
質問者

お礼

早速回答いただきありがとうございます。 大変勉強になります。実際に動作を確認しましたが、 ほぼ希望通りの動きができました。 ただ、ブラウザでロードすると、最初に2秒まってから「2番目」が表示されるようです。これを遅延なしで表示するのは難しいでしょうか。 よろしければご教示ください。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • javascriptの配列をPHPで読み込みたいのですが・・・

    javascriptの配列を記述してあるファイル info.js があるとします data = new array(); data[0] = new array("data1","data2","data3"); data[1] = new array("data1","data2","data3"); data[2] = new array("data1","data2","data3"); ・ ・ ・ 上記の文で書かれた配列データを、PHP上で読み込み、新着一覧のような形でhtmlで表示したいのですが、方法が分かりません。 分かる方がいらっしゃいましたら教えて下さい。

    • ベストアンサー
    • PHP
  • javascriptの配列について

    配列Tabに次のデータを初期値として与えてから、添え字の奇数番目の値を表示するとともに、積を求めて表示せよ データ:7,5,1,6,8,9,4,3,7,2 最終的に7,5,1,9,3,7だけ表示しその積を出せばよいという問題が出されたんですが 自分では全くできなかったのでどなたか教えてもらえませんか・・・ そもそもnew Arrayの使い方そのものが理解できていないためそこもある程度噛み砕いて教えていただけるとありがたいです

  • JavaScriptで2次元配列を扱う方法

    C言語を少しだけやっていました。 JavaScriptで2次元配列作りたいのですが、上手くいきません。 var array[5][5]; array[0][0] = 21; document.write(array[0][0]); ↑を実行しても「21」と表示されません。 new array()とか色々試しましたが上手くいかないので質問させていただきました。 教えてください!

  • javascript初心者です

    javascript超初心者です 配列を作る方法を教えてください new Array()で作らなくても下記のような記述だけでも配列をつくることができるんでしょうか? ["文字1", "文字2", "文字3"];

  • 多次元配列は配列の配列である

    Java勉強中なんですが、参考書を読んでいて「多次元配列は、実際には配列の配列である。つまり、2次元配列(array[][])がある場合、実際にはこれをarray[0]、array[1]、array[2]、といった1次元配列に配列として扱う事ができる。」と書いてあり、例題で、 double array[][] = new double[5][]; array[0] = new double[500]; array[0] = new double[400]; array[0] = new double[300]; array[0] = new double[200]; array[0] = new double[100]; と書いてありました。これについてのこれ以上の説明はなく、理解できなくて困っています。ご教授宜しくお願いいたします。

    • ベストアンサー
    • Java
  • PHPのようにスマートに配列の配列など記述する方法が

    PHPの場合、データ構造ですが以下のようになっています。 $a = array( "test1" => array( array(1,1), array("x", 2) ), "test2" => array( array(3,2), array("y", 1) ), ); これをエクセルVBAの場合、Scripting.Dictionaryを使えば連想配列が 可能ですが、PHPのようにスマートに配列の配列など記述する方法が わかりません。 Dim dic As Scripting.Dictionary set dic = New Scripting.dictionary dic.Add "test1", ???????????????? dic.Add "test2", ???????????????? スマートにデータ構造を実現できる方法が知りたいです。

  • 空の配列を示す方法

    Flash8を使用して、ActionScript2を書いています。 if文を用いて、「変数my_array(配列)が空の配列でない場合は~」 という条件分岐を書きたいのですが、 空の配列を示す方法がわかりません。 var my_array:Array = new Array(); とした上で、 if (my_array == null) { trace("null"); } else { trace("違う"); } と書いて調べてみたのですが、 nullでもundefinedでも""でも[]でも「違う」と表示されてしまいます。 「空の配列でない場合」という条件を書く方法はあるでしょうか?

    • ベストアンサー
    • Flash
  • JavaScriptの連想配列について

    myArray = new Array();  myArray["A001"] = new Array();   myArray["A001"]["B001"] = "B001";   myArray["A001"]["B002"] = new Array();    myArray["A001"]["B002"]["C001"] = "C001";    myArray["A001"]["B002"]["C002"] = "C002";  myArray["A002"] = "A002"; JavaScriptの連想配列について質問させて頂きます。 例えば上記のような配列があったとして、値とキーはそのままで "C001" と "C002" の"B002"配列への格納順序だけ入れ替えたい場合、 どのように実装すればよろしいでしょうか? ちなみにキーや値はサンプルで実際にはsort出来るルールはありません。。。 ※入れ替え後のイメージ --------------------------------------------------------------------- myArray = new Array();  myArray["A001"] = new Array();   myArray["A001"]["B001"] = "B001";   myArray["A001"]["B002"] = new Array();    myArray["A001"]["B002"]["C002"] = "C002"; ←格納順序が    myArray["A001"]["B002"]["C001"] = "C001";  入れ替わった  myArray["A002"] = "A002"; ---------------------------------------------------------------------

  • setTimeoutを使用して文字を表示させたい

    おたずねします。 まだまだ初心者で、練習用に以下のようなプログラムを書いたのですが、うまく動きません。 やりたいことは「あいうえお」の文字を順番に、規定の時間(1秒ずつ表示時間を長くして)表示させるものです。 <script language="javascript"> mozi= new Array(); mozi[0]=("あ"); mozi[1]=("い"); mozi[2]=("う"); mozi[3]=("え"); mozi[4]=("お"); time= new Array(); time[0]=(1000); time[1]=(2000); time[2]=(3000); time[3]=(4000); time[4]=(5000); var menu=0; function aaa(){ document.write(mozi[menu]); timerID = setTimeout("aaa()",time[menu]); if(menu == mozi.length-1){ menu=0; }else{ menu++; } } </script> <body> <script language=javascript> <!-- aaa(); //--> </script> </body> どうしても「あ」→「い」のあとで動作がループのように固まってしまします。 このプログラムの順番がどのように動いて、 [menu]内の変数の増え方がどのようになっているのかが よくわからず困っています。 他にも別の記述方法はいろいろあると思うのですが、 できればこのプログラムを修正する形で御指摘いただきたいのですが。 どうぞよろしくお願いいたします。

  • JavaからJavascriptの配列を出力したい

    JavaからJavascriptの配列を出力したいのですが、 appendした要素を区切り文字で区切って返す方法が わかりません。 <% StringBuffer js = new StringBuffer(); js.append("1"); js.append("2"); %> Javaで↑のように格納した後に、 下記のようにJavascriptの配列を出力したいです。 if(a = 1){ val=new Array("1,"2"); }