2016-06-25 19 views
0

すべてのキーアップでjsonデータを検索したいと思います。jsonを使ってjsonデータを検索する方法

JSON:

{ 
"AB01": { 
    "foo": "bar", 
    "ID": "A1", 
    "PID": "Z09", 
    }, 
    "AB10": { 
    "foo10": "bar10", 
    "ID": "B10", 
    "PID": "Y08", 
    }, 
} 

jQueryの

$('input').on('keyup', function(){ 
    $.getJSON("ABc.json", function(data) { 
    var InputVal = $('input').val(); 
    var myExp = new RegExp(InputVal, "i"); 

    var results = []; 

    $.each(data, function(key, obj){ 
     if (obj.foo.search(new RegExp(InputVal,"i")) != -1) { 
      results.push(obj); 
     }  
    }); 

    for(var i=0; i< $(results).length; i++) 
    { 
    console.log(JSON.stringify(results[i])); 
    } 
    }); 
}); 

HTML:

<input type="text" name="abc"> 


今、私はトンをしたいですinput string\charon every keyupと一致するデータは、fooまたはIDではなく、すべてのキーと値で一致します。


私はこれを解決する方法を見つけることができません、助けていただきありがとうございます。
私の側から欲しいものがあれば教えてください:)


ありがとうございます。

+0

キーイベントごとにJSONを取得する必要はありません。 –

+0

大丈夫ですが、私の問題を解決する方法.. –

+0

あなたの問題は非常に間違って述べられています。本当にあなたの質問は、オブジェクトのプロパティをトラバースすることです。そのためには、Object.keys(data)を使用できます(https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/を参照してください)。オブジェクト/キー)。 –

答えて

0

オブジェクトに対して文字列比較を実行しようとしています。

これらのオブジェクトの各プロパティの内部反復が必要です。

$.each(data, function(key, obj){ 
    var hasMatch = false; 
    // use any object property iteration approach to check each value 
    $.each(obj, function(key,val){ 
     if (val.search(new RegExp(InputVal,"i")) != -1) { 
      hasMatch = true; 
      return false; // break the loop, we have a match 
     } 
    }); 
    if(hasMatch){ 
     results.push(obj); 
    }    
}); 

フィルタのような他の配列方法は、()あなたが使用できるが、私はまた、あなたが必要としませんので、事前にデータをロードする必要があることに注意してください

あなたの現在のコードと同じ形式で保管がありますそれを毎回要求する

関連する問題