具有计算属性vuejs的高级搜索

时间:2018-10-19 17:00:57

标签: vue.js computed-properties advanced-search

伙计们,我有一个名为searchQuery的数据属性以及一个计算属性,该属性可以搜索我的商品名称和templateArray中的keywordArray并返回模板。效果很好。但是我试图使它更强大。 继承人我的计算属性

  searchResults: function(){
      return this.filteredTemplateArray.filter((template)=>{
        return template.itemName.toLowerCase().includes(this.searchQuery.toLowerCase())
          || template.keywordArray.toString().toLowerCase().includes(this.searchQuery.toLowerCase());
      })
  }

每个模板都作为一个对象返回,其中包含一个包含名为keywordArray的数组。该对象看起来像这样

0:Object
categoryArray:Array[0]
dateAdded:"2016-05-27 10:16:56"
id:"15"
itemId:"73076"
itemName:"Colorful Trans"
keywordArray:Array[2]
0:"Water"
1:"Sparkles"
projectPath:"M:/Projects/Generics/CreativeEngine/2016/ColorfulImageTrans-Scott/ColorfulImageTrans.aep"
renderTime:"30"
stillImageLocation:"12.90"
tested:"1"
thumbName:"COLORFULIMAGETRANS"

基本上我想做的是,如果它不返回template.keywordArray.toString().toLowerCase().includes(this.searchQuery.toLowerCase())的结果,我想搜索每个由空格分隔的单词,就好像它是自己的searchQuery一样。例如,现在如果我输入sparkles,我会得到结果。如果输入水,我得到结果,但是如果输入水,则不会返回任何结果。如果searchQuery有空格,请在keywordArray中搜索水和火花。

1 个答案:

答案 0 :(得分:0)

string = input("Enter a string") acc = "" for idx,char in enumerate(string): if(ord(char)>=65 and ord(char)<=90): acc+=string[idx:] break elif(ord(char)>=97 and ord(char)<=122): acc+=char.upper() acc+=string[idx+1:] break acc+=char print(acc) 返回以逗号someArray.toString分隔的数组项,因此请尝试用空格,替换该逗号,如下所示:


如果搜索到的单词不正确,则可以使用以下方法:

template.keywordArray.toString().replace(","," ").toLowerCase().includes(this.searchQuery.toLowerCase());

示例代码:

this.searchQuery.toLowerCase().split(' ').every(val => {
  return template.keywordArray.toString().toLowerCase().split(',').filter(item => {
    return item.includes(val)
  }).length !== 0;
})
/***OR directly search in keywordArray***/
this.searchQuery.toLowerCase().split(' ').every(val => {
  return template.keywordArray.filter(item => {
    return item.includes(val)
  }).length !== 0;
})