为了账号安全,请及时绑定邮箱和手机立即绑定

使用 JavaScript 的搜索栏中的词序

使用 JavaScript 的搜索栏中的词序

泛舟湖上清波郎朗 2021-06-16 17:15:32
解释。我是 VueJS 和 JavaScript 的新手,我正在尝试设置搜索栏。到目前为止,它运行良好,但我有一个问题。即使我在搜索栏中键入的单词顺序不正确,我也希望能够搜索对象的描述。例子。 描述中的字符串将是“Gucci 蓝带”。如果我输入“Gucci blue”,结果就会显示出来,因为描述中包含这些单词的确切顺序。因此,我想添加可以输入“Gucci 腰带”的功能,并且会显示带有“Gucci 蓝腰带”描述的项目。我在 VueJS 计算部分的当前代码   filteredsortedobjects (){    return this.sortedobjects.filter(object => {      var Objectslist_n = object.name;      var Objectslist_q = object.quantity;      var Objectslist_c = object.category;      var Objectslist_s = object.section;      var Objectslist_d = object.description;      var Objectslist_date = object.reception_date;      var Input = this.searchQuery;      /* Form arrays with all the information in the table */      var Objectslist_nq = Objectslist_n.concat(Objectslist_q);      var Objectslist_nqc = Objectslist_nq.concat(Objectslist_c);      var Objectslist_nqcs = Objectslist_nqc.concat(Objectslist_s);      var Objectslist_nqcsd = Objectslist_nqcs.concat(Objectslist_d);      var Objectslist_nqcsddate = Objectslist_nqcsd.concat(Objectslist_date);      /* Filtered variables */      var F_Objectslist = RemoveAccents(Objectslist_nqcsddate.toLowerCase());      var F_Input = RemoveAccents(this.searchQuery.toLowerCase());      /* Function to remove accents */      function RemoveAccents(str) {        var accents    = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';        var accentsOut = "AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUuuuuNnSsYyyZz";        str = str.split('');        var strLen = str.length;       我知道删除重音的功能尚未使用,因为我一直在测试。我尝试做的事情。我尝试设置变量 F_Input (搜索栏中正在写入的内容)和 F_Objectslist (一个变量,该变量包含一个数组,其中包含项目的所有单词,例如,名称、类别、部分、数量、描述和日期)作为字符串由 array.split(" ") 表示。这样,我就可以在控制台 ["word", "word2", ...] 中为我的两个变量使用这种格式的字符串数组。从这一点来看,我不确定如何检查 F_Input 数组中的字符串是否都存在于 F_Objectslist 的数组中,即使它们的顺序不同。
查看完整描述

3 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

我想你已经很接近了,我会像这样接近它


function searchString(input, match) {

  let is_a_match = true;


  const match_arr = match.split(' ');

  const input_arr = input.split(' ');


  input_arr.forEach(word => {

    if (match_arr.indexOf(word) === -1) {

        is_a_match = false;

    }

  });


  return is_a_match;

}


查看完整回答
反对 回复 2021-06-24
?
倚天杖

TA贡献1828条经验 获得超3个赞

拆分F_Input“”,然后您可以使用 'Array.prototype.map()'F_Input使用您现在拥有的相同技术遍历搜索词数组。


请注意,我已将所有这些链接在一起,并最终调用该.every()方法。最后一个说每个map操作(搜索)都必须导致一个 true(或者map操作的结果必须导致一个只有 的数组true);


const F_Objectslist = "this is search term, and this is term search".split(' ');

const F_Input = "search term";


let result = search(F_Objectslist, F_Input);

console.log(result);


let notFoundResult = search(F_Objectslist, "search dog");

console.log(notFoundResult);


function search(text, terms) {

  return terms.split(' ').map(term =>text.includes(term)).every(found=>found===true);

}


查看完整回答
反对 回复 2021-06-24
  • 3 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信