Javascript 如何更改搜索功能以接受任意单词组合

Javascript 如何更改搜索功能以接受任意单词组合,javascript,html,Javascript,Html,当我试图搜索一个产品的标题时,如果它是精确的单词、一个单词或连续单词的组合,它只显示结果 例如,如果我试图查找产品蓝色飞车,则如果我尝试搜索蓝色飞车,则产品不会显示。基本上,我希望我的搜索是固定的,以接受不同的组合。我该怎么做 var item_xlsx = './assets/data/products.xlsx'; var all_items = []; var all_cats = []; var subcats = []; var catQuery = ''; v

当我试图搜索一个产品的标题时,如果它是精确的单词、一个单词或连续单词的组合,它只显示结果

例如,如果我试图查找产品
蓝色飞车
,则如果我尝试搜索
蓝色飞车
,则产品不会显示。基本上,我希望我的搜索是固定的,以接受不同的组合。我该怎么做

  var item_xlsx = './assets/data/products.xlsx';
  var all_items = [];
  var all_cats = [];
  var subcats = [];
  var catQuery = '';
  var subCatQuery = '';
  var titleQuery = '';
  
  function load_data() {

    // get query parameters
    catQuery = get_param('cat');
    subCatQuery = get_param('subcat');
    titleQuery = get_param('searchtext');
    $('#searchtext').val(titleQuery);
    $('#cat').val(catQuery);
    
    fetch(item_xlsx).then(function (res) {
      if (!res.ok) throw new Error("fetch failed");
      return res.arrayBuffer();
    }).then(function (ab) {
      var data = new Uint8Array(ab);
      var workbook = XLSX.read(data, { type: "array" });
      var first_sheet_name = workbook.SheetNames[0];
      var worksheet = workbook.Sheets[first_sheet_name];
      all_items = XLSX.utils.sheet_to_json(worksheet, { raw: true });
      
      populate_cats();
      populate_subcats(catQuery);
      render_category_form();
      render_search_form(catQuery, titleQuery, all_items);
      render_search_summary(catQuery, titleQuery, all_items);
      render_search_results(catQuery, titleQuery, all_items);
    });
  }
  
   function get_param(name) {
    name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
    var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
    var results = regex.exec(location.search);
    return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
  }

  /* Filter items and render search results */
   function render_search_results(cat, query, items) {

    let results = all_items.filter(function (value, index, self) { // filter by cat 
      if (!catQuery || catQuery === "") {
        return true;
      } else {
        return value.cat == catQuery;
      }
    }).filter(function (value, index, self) { // filter by subcat
      if (!subCatQuery || subCatQuery === "") {
        return true;
      } else {
        return value.subcat == subCatQuery;
      }
    }).filter(function (value, index, self) { // filter by query
      if (!titleQuery || titleQuery === "") {
        return true;
      } else {
        var regex = new RegExp(titleQuery, "i");
        return value.name.search(regex) != -1 || value.audience.search(regex) != -1;
      }
    })

尝试筛选搜索查询中的每个单词-这样,结果将只包含这些包含所有搜索单词的项目

搜索测试的函数示例:

//设置测试数组值
var all_项目=['abba the cure metall'、'abba the best songs'、'blue car abba'、'moose egipt sand sun abba'、'sunny day the company'、'abba songs'、'egiptian culture songs'、'blue sunny Skys'、'blue sunny songs'、'蓝色晴朗的天空'、'Sing songs when sky is blue'、'与abba在车内'、'与麋鹿在车内'、'驼鹿是蓝色的“,”和阿巴一起唱一首歌“];
//将数组转换为与代码中类似的对象的arr
$。每个(所有项目、功能(i、v){
所有_项[i]={name:v,受众:''};
});
//显示所有元素
$.each(所有_项,函数(i,v){$('#namesDiv').append($('').text(v.name));});
//
$('form')。提交(函数(e){
e、 预防默认值();
//从输入元素设置测试查询
var titleQuery=$('#search').val();
//按查询筛选
var queryParts=titleQuery.split(//[^\w]+/g);//拆分关键字
var result_items=$.extend(true,[],all_items);//将所有项复制到结果数组

对于(var i=0;i请尝试筛选搜索查询中的每个单词-这样,结果将只包含这些包含所有搜索单词的项目

搜索测试的函数示例:

//设置测试数组值
var all_项目=['abba the cure metall'、'abba the best songs'、'blue car abba'、'moose egipt sand sun abba'、'sunny day the company'、'abba songs'、'egiptian culture songs'、'blue sunny Skys'、'blue sunny songs'、'蓝色晴朗的天空'、'Sing songs when sky is blue'、'与abba在车内'、'与麋鹿在车内'、'驼鹿是蓝色的“,”和阿巴一起唱一首歌“];
//将数组转换为与代码中类似的对象的arr
$。每个(所有项目、功能(i、v){
所有_项[i]={name:v,受众:''};
});
//显示所有元素
$.each(所有_项,函数(i,v){$('#namesDiv').append($('').text(v.name));});
//
$('form')。提交(函数(e){
e、 预防默认值();
//从输入元素设置测试查询
var titleQuery=$('#search').val();
//按查询筛选
var queryParts=titleQuery.split(//[^\w]+/g);//拆分关键字
var result_items=$.extend(true,[],all_items);//将所有项复制到结果数组

对于(var i=0;i尝试在搜索函数中使用JavaScript的
“我的字符串”。包括(“字符串”)
(这将返回true)尝试在搜索函数中使用JavaScript的
“我的字符串”。包括(“字符串”)
(这将返回true)