2017-05-26 99 views
1

我有一個搜索頁面,其中有8個搜索標準。在Javascript中,我想用以下多種搜索組合來構建搜索(只是一個函數,因爲我可以編寫查詢),我的搜索字段是A,B,C, d,E,F,G &^h 我目前正試圖建立類似下面,如何構建包含多個搜索字段的搜索頁面?

if (a != "" && b == "" && c == "" && d == "" && e == "" && f == "" && g == "" && h == "") { 
    // my code queries for 'a' 
} else if (a != "" && b != "" && c == "" && d == "" && e == "" && f == "" && g == "" && h == "") { 
    // my code queries for both 'a' & 'b' 
} 

所以同樣我也寫了很多組合。有沒有簡單的方法或循環來做到這一點?

謝謝。

+0

沒有足夠的信息來幫助你。爲了制定過濾邏輯,我們需要查看您正在使用的數據集,並且知道過濾應該如何工作,即。它是包容性的,排他性的等 –

+0

你可以只說'if(a!=「」){code for a},然後其他類似,總共8個if語句每個只處理自己的變量,並在最後將結果連接成單個查詢語句? – nnnnnn

+0

@nnnnnn這是目前我已經做到了,但我必須驗證每個變量,所以有超過100個組合。 –

回答

1

您可以將標準存儲在數組中,然後過濾該數組以刪除空白值。

criterions = [a,b,c,d,e,f,g,h]; 
citerions = criterions.filter(
    function(value){ 
    return value != ""; 
    }, 
    criterions 
); 

然後你就可以遍歷數組準則建立自己的搜索

+0

但這種方式不能知道哪個標準是空的? – WeiYuan

+1

如果你想知道空準則,你能做到,你測試的空白值,並將其存儲在另一個數組 –

+0

@SébastienMaloron 謝謝另一個過濾器,但如果我想這是內部的準則值,分配到變量如何我可以這樣做嗎,讓我們說標準裏面有c&d,我將如何爲c&d 創建變量非常感謝。 –

0

商店搜索標準數組對象包含的標準和價值。我們可以過濾掉不是空的對象,然後查詢它的關鍵。

let data = [{a: 1}, {b: 2}, {c: ''}, {d: ''}]; 
data = data.filter((d)=>Object.values(d)[0]); [{a: 1}, {b: 2}] 
data = data.map((d)=>Object.keys(d)[0]); // ['a', 'b'] 
// queries for data, ['a', 'b']