当前位置: 首页 > 知识库问答 >
问题:

搜索/筛选数组

戚升
2023-03-14

我正在为一个数组做一个搜索函数。我有一个输入[文本],例如,我把'ban',然后我需要所有以'ban'开头的结果显示出来,例如香蕉,香蕉奶昔,香蕉(油炸),等等。

我该怎么做呢?我试过了,但每次都不准确。我试过的在下面。

var inputBox = document.getElementById('ingredient');
var ingredienten = ["Appel", "Aardbei", "Aardappelen", "Banaan", "Bananen", "Banana"]

inputBox.onkeydown = function(evt) {
      $("#autocomplete").empty();

      // INSERT CODE FOR SEARCH FUNCTION


}

我有一个非常接近,但当我键入“ban”时,它出现了“aardbei”。这显然是错误的。在这里,也许我忽略了什么?

var inputBox = document.getElementById('ingredient');
var ingredienten = ["banaan", "bananen", "baan", "banana", "baaanana"];

inputBox.onkeydown = function(evt) {
    $("#autocomplete").empty();

    var input, filter, a, i;
    input = document.getElementById("myInput");
    filter = inputBox.value.toUpperCase();
    for (i = 0; i < ingredienten.length; i++) {
        a = ingredienten[i];
        if (a.toUpperCase().indexOf(filter) > -1) {
        //console.log(a);
        $("#autocomplete").append("<li>" + a + "</li>");
        } else {
        }
    }

共有1个答案

邹博裕
2023-03-14

我认为应该使用keyup事件,并且可以使用regex和项数组的filter函数:

var inputBox = document.getElementById('ingredient');
var ingredienten = ["Appel", "Aardbei", "Aardappelen", "Banaan", "Bananen", "Banana"]

inputBox.onkeyup = function(evt) {
    $("#autocomplete").empty();

    var query = $('#ingredient').val();

    // escape regex
    query = query.replace(
      /[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"
    );
    var queryRegExp = new RegExp('^' + query, 'i');
    
    var results = ingredienten.filter(function(item) {
        return queryRegExp.test(item);
    });
   
    results.forEach(function(item) {
        $("#autocomplete").append("<li>" + item + "</li>");
    });
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="text" id="ingredient" />
<div id="autocomplete"></div>
 类似资料:
  • Navicat 提供筛选功能,让你在连接窗格、对象列表窗格、模型设计器和其他树状结构搜索对象。 在连接窗格或其他树状结构,点击该窗格或树来聚焦并直接筛选字符串。如果连接窗格中的连接已打开,筛选也会同时应用到连接中的数据库对象。 在对象列表窗格,点击 Navicat 主窗口的 ,并在搜索框里输入筛选字符串。在模型设计窗口,简单地在搜索框里输入筛选字符串。 你可以移除筛选,只需删除筛选字符串。

  • “对象筛选”能让你在 Navicat Cloud 筛选模型,在视图设计器中筛选树状结构、以及在画布中筛选包含筛选字符串的表、实体或视图。 只需在“搜索”文本框中指定一个筛选字符串。若要移除筛选,只需删除筛选字符串。

  • “对象筛选”能让你在 Navicat Cloud 筛选模型,以及在画布中筛选包含筛选字符串的表、实体或视图。 只需在“搜索”文本框中指定一个筛选字符串。若要移除筛选,只需删除筛选字符串。 “树筛选”能让你在浏览器或檢视图设计器中筛选包含筛选字符串的树状结构。 点击树来聚焦并直接指定筛选字符串。若要移除筛选,只需删除筛选字符串。

  • Navicat 提供筛选功能,让你在导航窗格、对象选项卡、模型设计器和其他树状结构搜索对象。 在导航窗格或其他树状结构,点击该窗格或树来聚焦并直接输入搜索字符串。如果导航窗格中的连接已打开,筛选也会同时应用到连接中的数据库对象。 在对象选项卡,点击 ,并在“搜索”文本框里输入搜索字符串。 在模型设计器窗口,简单地在“搜索”文本框里输入搜索字符串。 你只需删除搜索字符串就可移除筛选。

  • Navicat 提供筛选功能,让你在导航窗格、对象选项卡、模型设计器和其他树状结构搜索对象。 简单地在“搜索”文本框里直接输入搜索字符串。如果导航窗格中的连接已打开,筛选也会同时应用到连接中的数据库对象。 你只需删除搜索字符串就可移除筛选。

  • Navicat 提供筛选功能,让你在导航窗格、对象选项卡、模型设计器和其他树状结构搜索对象。 简单地在“搜索”文本框里直接输入搜索字符串。如果导航窗格中的连接已打开,筛选也会同时应用到连接中的数据库对象。 你只需删除搜索字符串就可移除筛选。