JavaScriptで検索候補のテキストボックスコントロールを作成しています。ユーザーが入力した文字列と、ユーザーの連絡先リストを表すJSONオブジェクトを比較する方法を探しています。JSONPathを使用して文字列を複数のJSONプロパティ値と比較する
JSONオブジェクトは、次のようになります。
JSONPathを使用してvar contacts = {
'gmail' : [
{ name : 'Joe Smith', email : '[email protected]' },
{ name : 'James Simpson', email : '[email protected]' }
]
}
、私は成功し、ユーザーが連絡先オブジェクト内の単一のフィールドに対して入力された文字列を比較することができました(つまり、私は名前をテストすることができます。 、または電子メール)を使用して、以下:{James Simpson}
連絡先オブジェクトを返しますが、私が代わりにジェームズのジムを入力した場合、私は二つの別々のJSONPathクエリやっていない限り、それは何も返さないだろう
var input = "james";
var search_path = '$.*[?(/' + input + '/i.test(@.name))]';
var results = jsonPath(contacts ,search_path, {resultType:"VALUE"});
- 名に対して1と他の人はメールに反対します。
私が探しているのは、JSONPathでOR演算子を実行するためのエレガントな方法です。複数のJSONプロパティ値に対して1つの文字列をテストできます。
var search_path = '$.*[?(/' + input + '/i.test([ @.name, @.email ]))]';
これを行う方法のいずれかを知っています:どのような私が探していることを説明し
ここで擬似コード(非稼働)があります?