2017-04-08 20 views
2

ユーザーが入力した入力で配列を検索できるようにします。たとえば、ユーザーが入力フィールドに「18」を入力すると、「値が見つかりません」が表示されるか、番号18が配列内にあるかどうかによって「値が見つかりました」が表示されます。ユーザー入力を使用してアレイを検索する

これはこれまで私が行ってきたことです。

var search = document.getElementById("search"); 
var arr = [18,23,20,17,21,18,22,19,18,20]; 

function beginhere() { 
    var input = document.getElementById("Input").value; 

    for (i=0; i<arr.length; i++){ 
     if (arr[i] == Input) { 
     alert(arr[i]); 
     } else { 
     alert("Value not found"); 
     } 
    } 
}; 
+0

のJavaScriptは、大文字と小文字が区別され – charlietfl

答えて

1

あなたの間違いは

if (arr[i] == input) { 

をする必要がありますInput

if (arr[i] == Input) { 

i大文字と小文字が区別され、その後、あなたは本当にelse一部を必要としません。ループの後に見つからないアラートを書き、ifの中にreturn文を書くだけです。

function beginhere() { 
    var input = document.getElementById("Input").value; 

    for (i=0; i<arr.length; i++){ 
     if (arr[i] == input) { 
     alert(arr[i]); 
     return; 
     } 
    } 
    alert("Value not found"); 
}; 

、ループせずに、あなたは今のようには forループのすべてのサイクルとなる警告ので、私は、あなたの if条件をリファクタリングしました

function beginhere() { 
    var input = document.getElementById("Input").value; 

    if(arr.indexOf(parseInt(input)) != -1) { 
      alert(input); 
      return; 
     } 
    alert("Value not found"); 
}; 
0

試すことができます。ループ内で配列内の指定された番号が見つかった場合は、その番号を記録して関数を返します(ループをもう使用する必要はありません)。そうでない場合は、その値をコンソールに記録しないでください。 Array#findを使用して

var arr = [18, 23, 20, 17, 21, 18, 22, 19, 18, 20]; 
 

 
function beginhere() { 
 
    var input = document.getElementById("Input").value; 
 
    for (i = 0; i < arr.length; i++) { 
 
    if (arr[i] == input) { 
 
     console.log(arr[i]); 
 
     return; 
 
    } 
 
    } 
 
    console.log('value not found'); 
 
};
<button onclick="beginhere()">click</button> 
 
<input id='Input'>

もう一つの可能​​な解決策、。

var arr = [18, 23, 20, 17, 21, 18, 22, 19, 18, 20]; 
 

 
function beginhere() { 
 
    var input = document.getElementById("Input").value, 
 
     res = arr.find(v => v == input); 
 
     console.log(res ? res : "wasn't found"); 
 
};
<button onclick="beginhere()">click</button> 
 
<input id='Input'>

0

あなたはいくつかの問題があります:あなたは開始時に実際の値ではなく値を必要とするので、関数の内部

  • 移動search宣言と初期化を。

  • 値の前にplusを追加して検索値を数値に変換します。これは、値(文字列または数値)を数値に変換するためにunary plus +を使用します。

  • searchでテストしてください。

  • 出口機能がsearchの場合。

  • ループの後に見つからないメッセージが1つだけ表示されます。

var arr = [18, 23, 20, 17, 21, 18, 22, 19, 18, 20]; 
 

 
function beginhere() { 
 
    var search = +document.getElementById("search").value, // need to covert to integer 
 
     i; // declaration missing 
 

 
    for (i = 0; i < arr.length; i++) { 
 
     if (arr[i] == search) { // use search variable 
 
      alert(arr[i]); 
 
      return; 
 
     } 
 
    } 
 
    alert("Value not found"); 
 
}
<input id="search" type="text" onchange="beginhere()">

関連する問題