簡體   English   中英

使用%LIKE%像SQL一樣在數組中搜索

[英]Search in array with %LIKE% like as SQL

由於SQLite非常慢,因此我選擇了所有需要的記錄並存儲在數組中。

現在在我的應用程序中,我有一個搜索部分,用戶可以在該數組上搜索部分字符串。

我的數組結構是:

[
   {
   name : 'Black',
   family : 'Dragon',
   email : 'black.dragon@blahblahblah.com'
   }
]

我的頁面上有3個輸入字段,用戶可以輸入一些字符,我應該在此數組中搜索並返回匹配值的索引。

例如,如果我的用戶輸入blalack@blahblah ,我的程序應該返回這個值的指數。

可能嗎? 我應該如何工作?

下划線LoDash對於這樣的數組操作非常方便。

function getMatchingIndex(yourArray, searchTerm) {
  return _.findIndex(yourArray, function(obj) {
    return _.contains(obj, searchTerm);
  });
}

如果您使用的是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>

您可以使用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]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM