嗨我正在建立一個使用自動建議的表單。它的工作方式是將大約2萬多個客戶加入我的angularjs應用程序。然後,當用戶在輸入字段中鍵入要查找的客戶名稱時,我只會顯示與用戶輸入的客戶相匹配的客戶。每次用戶輸入字符時,查找函數$ scope.search1_autosuggest()都會運行再次。自動建議20,000條目
我想知道如果我這樣做的方式是有效的或沒有?由於它是一大組數據,我想確保速度足夠快以進行自我暗示。
controller.js
$scope.search1_autosuggest=function(type){
var results=$scope.original_data;
var new_results=[];
if(type=="phone"){
var typed_result=$scope.search1.phone;
for (var key in results) {
var phone_result = results[key].home_phone;
if(phone_result.match(typed_result)){
new_results.push(results[key]);
}
}
$scope.info=new_results;
}
};
partial.html
<form>
Phone: <input type="text" data-ng-model="search1.phone" data-ng-
change="search1_autosuggest('phone')"/><br/>
Name: <input type="text" data-ng-model="search1.name" data-ng-
change="search1_autosuggest('name')"/><br/>
Address: <input type="text" data-ng-model="search1.address" data-ng-
change="search1_autosuggest('address')"/><br/>
</form>
<h3>Customers</h3>
<div>
<ul>
<li data-ng-repeat="field in info">
<a href="" data-ng-click="retrieve_single(field.id)"> name:{{field.name}}.
address:{{field.address}}. Phone:{{field.home_phone}}.</a>
</li>
</ul>
</div>
數據庫引擎如何有效地查詢海量數據(遠遠超過20,000個項目)?他們使用*索引*。當你獲取數據時,你應該創建一個索引。我認爲爲此也有一些很好的客戶端數據庫。你也應該限制你的結果來減少迭代次數。 –
如果您確定排序數據,則二分查找會將您從O(n)移動到O(log n)。如果你走這條路線,你可能想把電話,姓名和地址分成單獨的表格,這樣他們就可以被分類(可能將表格與索引鏈接起來) – KayakDave