我有一個HTML形式,其中不同的輸入文本框被綁定到一個AngularJS搜索對象,即價值,濾波的JavaScript陣列的鑰匙坯料
<input ng-model="search.state_prov">State</input>
<input ng-model="search.zip">Zip</input>
<input ng-model="search.country"></input>
我有一個非常大的陣列的物體如:
places = [{name: place1, state_prov: MO, zip: 63101, country: US},
{name: place2, state_prov: CA, zip: 90210, country: US},
{name: place3, state_prov: AB, zip: T0A, country: CA}
{name: place4, state_prov: CA, zip: 90001, country: US}
]
我想基於表單中輸入的輸入過濾這個數組(搜索)。當表單被初始化時,「搜索」對象是空的。一旦用戶開始輸入文本框(例如state_prov),搜索對象將爲search.state_prov獲取一個新的密鑰,其值爲框中鍵入的值。
然後我就可以搜索的地方數組中的比賽,我已經能夠使用該array.filter做()的原型:
var result = places.filter(searchQuery, query);
function searchQuery(place){
return Object.keys(this).every((key) => place[key] === this[key]);
}
我的問題是,如果用戶在兩個文本框填充,然後清除其中一個希望僅通過仍包含數據的文本框進行搜索,則「搜索」對象仍然具有用於已刪除輸入的鍵值爲空字符串的鍵。
search = {state_prov: "CA", zip: ""}
過濾器將嘗試匹配一個空字符串數組中的對象時,我寧願完全忽略這個關鍵,只有搜索與之相關的值的鍵。我怎樣才能走到最後一步?
這對我有效!我還非常感謝關於比較類似字符串而不是明確的平等的額外建議。我喜歡結果給我。 –