2016-10-13 5 views
0

私は何らかの検索機能を作成しようとしています。そこではポップアップが表示され、顧客からの入力を求めてそれを配列項目と比較し、「見つかった」または「見つからない」アラートウィンドウを戻します「ここループ中に配列内のすべての要素に対してalert()ウィンドウが表示されますか?

は、特定の機能のために私のコードです:

this.searchItem = function(){ 
    var searchInput = window.prompt('Enter the search value:',''); 
    var i; 
    for (i = 0; i< model.items.length; i++){ 
     if (model.items[i] == searchInput) { 
      window.prompt("found"); 
     } else { 
      window.prompt("not found"); 
     } 
    } 
} 

それは労働の一種です。問題は、配列内のすべての要素に対して新しいアラートウィンドウが表示され続けることです。たとえば、配列に6つの要素があり、検索入力と一致する要素が1つしかない場合、「見つからない」および「見つかった」という5つの警告ウィンドウが表示されます。前のページを閉じるか、[OK]ボタンをクリックすると別のページが表示されます。それが見つかったかどうかを教えてくれるのは、警告ウィンドウを1回だけ表示させるにはどうしたらいいですか?ありがとう!

+1

それを行う。一致しないすべての要素は 'else'節を実行し、プロンプトを表示します。そうしないでください。あなたの外にプロンプ​​トが1つあります。要素が見つからない場合にのみループして呼び出してください。 –

答えて

3

alertpromptではない)の後には、ループがの後になります。また、項目が見つかったかどうかを追跡するための変数の使用に切り替える必要があります。

this.searchItem = function(){ 
    var searchInput = window.prompt('Enter the search value:',''); 
    var i; 
    var found = false; 
    for (i = 0; i< model.items.length; i++){ 
     if (model.items[i] == searchInput) { 
      found = true; 
      break; 
     } 
    } 
    window.alert(found ? 'found' : 'not found'); 
} 
+0

@JohnnyMoppこれは本当にクレイジーです!偉大な心、アミライト? :D –

+0

あなたは天才です。ありがとう! – ianetaa

0

代わりに、アラートを毎回表示するので、varは真=見られるような変数を設定します。ループが終了したら、そのvarのステータスに基づいてアラートを表示します。

0

アラートを1回だけ表示するには、ループ内ではなくループ終了後にアラートを実行する必要があります。

0

ループの後で関数内で何もしていないので、探していた要素が見つかったときに戻ることができます。要素を見つけずにループを終了すると、「見つからない」だけが表示されます。また、あなたはあなたが唯一の1試合を見つけることに求めているならば、それは、1を見つけるたびに、そしてちょうど終了したメッセージを表示することを指示していArray.prototype.indexOfまたはArray.prototype.includes

0
this.searchItem = function(){ 
    var searchInput = window.prompt('Enter the search value:',''); 
    var i; 
    var found = false; 
    for (i = 0; i< model.items.length; i++){ 
     if (model.items[i] == searchInput) { 
      found = true; 
     } 
    } 
    if(found == true) 
     window.prompt("found"); 
    else 
     window.prompt("not found") 
} 
0

を使用してこれを簡素化することができ

this.searchItem = function(){ 
    var searchInput = window.prompt('Enter the search value:',''); 
    var i; 
    for (i = 0; i< model.items.length; i++){ 
     if (model.items[i] == searchInput) { 
      window.alert("found"); 
      return; 
     } 
    } 
    window.alert("not found"); 
} 

あなたがそれを見つけるループ。

単にbreak;かを使用してループを終了だけセットの配列の長さにi

...... 
if (model.items[i] == searchInput) { 
      window.prompt("found"); 
      return 0; 
      } 
..... 
window.prompt("Not found"); //if fucntion doesn't return then it's not found. 

OR

var found = false; 
...... 
if (model.items[i] == searchInput) { 
      window.prompt("found"); 
      found = true; 
      break; 
      } 
..... 
if(!found) window.prompt("Not found"); 

OR

...... 
if (model.items[i] == searchInput) { 
      window.prompt("found"); 
      found = true; 
      i = items.length; 
      } 
..... 
if(!found) window.prompt("Not found"); 
あなたがそれを求めているので、ことやっている
関連する問題