2016-09-08 8 views
-3

自分のキーが自分のデータに含まれているかどうかを知らせる機能を作成しようとしています。Javascript - キーがデータに含まれていないか確認してください。

data = [{ 
 
    "1" : ["1007","1020"], 
 
    "2" : ["1200","1493"], 
 
    "3" : ["6754","8652"], 
 
}] 
 

 
document.getElementById("input").addEventListener("keyup", myFunction); 
 
function myFunction() { 
 
    var value = document.getElementById('input').value; 
 
    for (var i = 0; i < data.length; i++) { 
 
     for (var key in data[i]) 
 
     { 
 
      if (key in data[i]) { 
 
       if (data[i][key].indexOf(value) !== -1){ 
 
        document.getElementById('text').innerHTML = key; 
 

 
       } 
 
      } 
 

 
     } 
 
    } 
 
}
<div id="text"></div> 
 
<input id="input" />

何このコードがないことは、入力にinsered番号がデータであるとdiv要素の中に彼のグループ番号を表示する場合は、彼がチェックするということです。しかし、数値がデータに含まれていないとどうなりますか?私は数字が私のデータに存在しない場合は、divに '0'として表示することができるようにしたい。

+1

'VARのjayIFoundOneを偽=;'ループの前に、ときに1を見つけるあなたはそれを設定しますループ内で真実である(そして、複数のマッチが期待されない場合はループから抜け出す)...そして、あなたは単純に後でそのフラグを確認してください。 – CBroe

+0

フラグをfalseに初期化して、それをtrueに切り替えると、フラグがまだfalseの配列をループした後、0に表示することができます – naortor

+0

@CBroe hmm、私は視覚化できませんそれは、私に例を教えてもらえますか? – Lindow

答えて

2

data = [{ 
 
    "1" : ["1007","1020"], 
 
    "2" : ["1200","1493"], 
 
    "3" : ["6754","8652"], 
 
}] 
 

 
document.getElementById("input").addEventListener("keyup", myFunction); 
 
function myFunction() { 
 
    var value = document.getElementById('input').value; 
 
    var foundIt = false; 
 
    for (var i = 0; i < data.length && !foundIt; i++) { 
 
     for (var key in data[i]) 
 
     { 
 
      if (key in data[i]) { 
 
       if (data[i][key].indexOf(value) !== -1){ 
 
        document.getElementById('text').innerHTML = key; 
 
        foundIt = true; 
 

 
       } 
 
      } 
 

 
     } 
 
     if (!foundIt) { 
 
      document.getElementById('text').innerHTML = 0; 
 
     } 
 
    } 
 
}
<div id="text"></div> 
 
<input id="input" />

2

次最適化されたバージョンを使用します

data = [{ 
 
    "1" : ["1007","1020"], 
 
    "2" : ["1200","1493"], 
 
    "3" : ["6754","8652"], 
 
}] 
 

 
document.getElementById("input").addEventListener("keyup", myFunction); 
 
function myFunction(el) { 
 
    var value = el.target.value, obj = data[0], keys, key = 0; 
 
    if (value) { 
 
    \t keys = Object.keys(obj); 
 
     keys.forEach(function(k){ 
 
      if (obj[k].indexOf(value) !== -1) key = k; 
 
     }); 
 
    \t document.getElementById('text').innerHTML = key; 
 
    }  
 
}
<div id="text"></div> 
 
<input id="input" />

関連する問題