• 締切済み

配列の検索

今配列の中にIDとsp(speak)というものが入っていて、それのsp部分に入っている言葉検索したいんですがjavascript初心者のためやり方がわかりません。とりあえずarray配列を使っていれて 例えばchat_mss[0]にはchat_mss[0].idはidの1がはいっていてchat_mss[0].spにはhelloと入っています。このときに 入力方の検索でhと打ち込んだらhがつくものを全部出すことができますかこれができないと大学卒業できないのでぜひ力を貸してください。 わかる人はソースなど書いてほしいです。 参考にソースを載せます。english_list.phpはMysqlからIDとspををもらっています。 var chat_mss = new Array(); function chat_mss_atribute(){ } function english_speak(){ //alert(msg); var url='english_list.php'; //alert(pars); var myAjax = new Ajax.Request( url, {method: 'post', onComplete: add_to_array } ); } function add_to_array(english_msg_list){ var curr_english_msg= english_msg_list.responseText; //alert(curr_english_msg); var msg_show = curr_english_msg.split("\n"); //alert(msg_show[2]); var ln = msg_show.length; //alert(ln); for (i = 0; i < ln-2; i++){ var english_show = msg_show[i].split(","); //alert(english_show[1]); chat_mss[i] = new chat_mss_atribute(); chat_mss[i].id=english_show[0]; chat_mss[i].sp=english_show[1]; alert(chat_mss[i].id); alert(chat_mss[i].sp); } check_msg(); }

みんなの回答

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

for ( i in 配列) { 処理 } というのは、 for (i = 0; i < 配列.length; i++){ 処理 } と同じです。(配列.length)は配列の要素の個数です。 iはループ毎に1加算される変数(ループ変数)です。 配列には 配列[0]="XXX"、配列[1]="yyy"、配列[3]="zzz" ....... のように、[0]から始まる添え字(インデックス)で [n-1]までn個の要素が格納されます。 <documentは表示するためのものだと自分は認識しているのでこれなくてもソースは通りますか?> document.open;からdocument.close; までは無くても動きます。 全体を見て{}の入れ子の数に注意してください

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

説明は省略するが下記に例を作った。うまくいくかどうかは、やってみて だめだったら、これをヒントに自分で調べればよい。 <form action="#"> <input type="text" id="char" size="5" value="T" /> <input type="button" value="検索" onClick="hogehoge();" /> </form> のタグで、入力方の"T"の文字を得るとして、 function hogehoge(){ var sarchchar = document.getElementById("char").value; var results = []; for (i in chat_mss) { var str = chat_mss[i].sp; var findwords = []; regexp = new RegExp("^"+ sarchchar +".*", "igm"); findwords = str.match(regexp); /* result = str.match(/^T.*/igm); */ if (findwords.length > 0){ for (var j=0;J<findwords.length;j++){ results.push(findwords[j]); } } } document.open; if (results.length > 0){ document.writeln(results.length + "個ヒット"); for (i in results) { document.writeln(results[i]); } }else{ document.write("ヒットしませんでした"); } document.close; }

cs007055
質問者

お礼

本当にありがとうございます。これを使って検討してみます。 また、聞くことがあるかもしれませんので、また質問をupした時は力を貸してください。

cs007055
質問者

補足

補足というより質問なんですがこないだのソースの for (i in chat_mss)の部分はどういう意味かわからないんで教えてほしいのと document.open; if (results.length > 0){ document.writeln(results.length + "個ヒット"); for (i in results) { document.writeln(results[i]); } }else{ document.write("ヒットしませんでした"); } document.close; } のdocumentは表示するためのものだと自分は認識しているのでこれなくてもソースは通りますか? 本当にくだらないことを聞いてすみません。