我在JavaScript中構建搜索建議文本框控件,並試圖找到一種方法來比較用戶輸入的字符串與代表用戶聯繫人列表的JSON對象。使用JSONPath比較具有多個JSON屬性值的字符串
JSON對象看起來是這樣的:
var contacts = {
'gmail' : [
{ name : 'Joe Smith', email : '[email protected]' },
{ name : 'James Simpson', email : '[email protected]' }
]
}
使用JSONPath,我已經能夠成功地比較字符串類型針對的聯繫人(即我可以測試名稱的單場用戶。 ,或使用電子郵件)以下:
var input = "james";
var search_path = '$.*[?(/' + input + '/i.test(@.name))]';
var results = jsonPath(contacts ,search_path, {resultType:"VALUE"});
它返回{James Simpson}
接觸的對象,但如果我輸入了吉姆而不是詹姆斯,除非我做了兩個獨立的JSONPath查詢將返回什麼 - 一個反對的名稱和其他反對電子郵件。
我在看什麼是一個優雅的方式來做與JSONPath的OR運算符,所以我可以測試一個字符串對多個JSON屬性值。
這裏是僞代碼(非工作)描述我正在尋找:
var search_path = '$.*[?(/' + input + '/i.test([ @.name, @.email ]))]';
有誰知道的方式做到這一點?