猿问

使用 JavaScript 的搜索栏中的词序

解释。我是 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 的数组中,即使它们的顺序不同。


泛舟湖上清波郎朗
浏览 123回答 3
3回答

元芳怎么了

我想你已经很接近了,我会像这样接近它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;}

倚天杖

拆分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);}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答