因为SQLite非常慢,所以我选择所有需要的记录并存储在一个数组中。
现在,在我的应用程序中,我有一个搜索节,用户可以在该数组上搜索字符串的一部分。
我的数组结构是:
[
{
name : 'Black',
family : 'Dragon',
email : 'black.dragon@blahblahblah.com'
}
]我的页面中有3个输入字段,用户可以输入一些字符,我应该在这个数组中进行搜索,并返回匹配值的索引。
例如,如果我的用户输入bla、lack或@blahblah,我的程序应该返回这个值的索引。
有可能吗?我该怎么工作呢?
发布于 2014-12-17 01:18:23
对于像这样的数组操作,Underscore或LoDash非常方便。
function getMatchingIndex(yourArray, searchTerm) {
return _.findIndex(yourArray, function(obj) {
return _.contains(obj, searchTerm);
});
}发布于 2014-12-17 01:25:33
如果你使用的是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>发布于 2014-12-22 02:06:59
您可以使用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]);https://stackoverflow.com/questions/27510009
复制相似问题