javascript - 自动完成功能可按属性搜索 json 对象

标签 javascript jquery json autocomplete

假设我有以下 json 对象,其中包含有关一组人的信息。

data=[{id:2, fname:"bob", lname:"roberts", common_name:null, email:"sideshowbob@email.com", telephone:"555-555-5555", street:"333 Street St", city:"Salt Lake City", state:"UT", country:null, zip:"99999", dynamid:null, notes:null, director:false, contractor:false, contractor_need_agreement:false, shareholder:false, shares_held:0, company_id:1, created_at:"2016-02-23T10:15:09.339Z", updated_at:"2016-02-23T10:15:09.339Z", officer:false, snapshot:null, sign_term_voting:false, drag_liquidation_approval:false, rofr_consenter:false, investor_councel:false, ir_insured:false, issuer_signing_officer:false, issuer_registered_agent:false, issuer_councel:false, rep_lead_investor:false, rep_investor:false, rep_founder:false}, 
      {id:1, fname:"John", lname:"Smith", common_name:null, email:"john.smith@email.com", telephone:"555-555-5555", street:"333 Street St", city:"Salt Lake City", state:"UT", country:null, zip:"99999", dynamid:null, notes:null, director:false, contractor:false, contractor_need_agreement:false, shareholder:false, shares_held:0, company_id:1, created_at:"2016-02-23T10:15:09.327Z", updated_at:"2016-02-23T10:15:09.327Z", officer:false, snapshot:null, sign_term_voting:false, drag_liquidation_approval:false, rofr_consenter:false, investor_councel:false, ir_insured:false, issuer_signing_officer:false, issuer_registered_agent:false, issuer_councel:false, rep_lead_investor:false, rep_investor:false, rep_founder:false}]

现在我想在文本框中实现某种自动完成功能,搜索每个人的姓名(即 fname+""+lname)以查找匹配项。找到匹配项后,它会返回找到匹配项的人或该人的 ID。

我在开始做这件事时遇到了一些麻烦。我想我可以直接写出来,我使用 keyup 来触发对象的循环,显示那些与字符串匹配的名称,并在单击其中一个时返回相应的索引,但这似乎是我的我正在重新发明轮子。

是否有一种有效/最佳实践的方法来实现此类功能?

最佳答案

来自这个 typeahead.js 演示 here :

完整代码jsfiddle :

var substringMatcher = function(strs) {
  return function findMatches(q, cb) {
    var matches, substringRegex;

    matches = [];

    substrRegex = new RegExp(q, 'i');

    $.each(strs, function(i, str) {
      var fullname = str.fname + " " + str.lname
            console.log(fullname);

      if (substrRegex.test(fullname)) {
        matches.push(fullname);
      }
    });

    cb(matches);
  };
};

关于javascript - 自动完成功能可按属性搜索 json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35812664/

相关文章:

sql - Postgres : Expand JSON column into rows

c# - 序列化包含字典的对象,以便字典键/值呈现为包含对象的一部分

javascript - Angular 渲染在组件中动态附加 <script>-标签

javascript - Skrollr 视差不适用于 iOS 和 Android 设备

javascript - 在 javascript 中创建连续的 HTML 数字

javascript - 如何并排展开和折叠三个div?

java - 使用插件与 appView.addJavascriptInterface 的不同之处

javascript - Angular ng-repeat preventDefault 替代方案

Jquery UI 可在更改事件上排序项目位置

arrays - 从 mongodb 中删除重复的数组值