因为SQLite非常慢,所以我选择了所有需要的记录并存储在一个数组中。
现在在我的应用程序中,我有一个搜索部分,用户可以搜索此数组的部分字符串。
我的数组结构是:
[
{
name : 'Black',
family : 'Dragon',
email : 'black.dragon@blahblahblah.com'
}
]
我的页面中有3个输入字段,用户可以输入一些字符,我应该搜索这个数组并返回匹配值的索引。
例如,如果我的用户输入bla
或lack
或@blahblah
,我的程序应返回此值的索引。
有可能吗?我该怎么办?
答案 0 :(得分:1)
Underscore或LoDash非常方便。
function getMatchingIndex(yourArray, searchTerm) {
return _.findIndex(yourArray, function(obj) {
return _.contains(obj, searchTerm);
});
}
答案 1 :(得分:0)
如果您正在使用Angular,则可以通过使用过滤器来实现。有一个开箱即可做你想要的,甚至在官方教程中也提到过:
https://docs.angularjs.org/tutorial/step_03
如果您想过滤转发器中的数据,请执行以下操作:
Search: <input ng-model="query">
<ul>
<li ng-repeat="dataItem in dataArray | filter:query">
{{data.name}}
<p>{{data.family}}</p>
<p>{{data.email}}</p>
</li>
</ul>
答案 2 :(得分:0)
您可以使用Alasql JavaScript SQL库执行此操作。它比SQLite更快,但仍然可以在JavaScript数组上使用SQL。
var res = alasql('SELECT * FROM ? WHERE email LIKE ?',[data, enter]);
为了提高执行速度,您可以预编译SELECT语句(因此,Alasql不需要 花时间解析SQL语句。)
// Initialization
var mySelect = alasql.compile('SELECT * FROM ? WHERE email LIKE ?');
// Execution time
var res = mySelect([data, enter]);