vue实现模糊搜索

968 阅读1分钟

vue实现模糊搜索

一、数组实现模糊搜索

CDN引入vue:

<link href="https://cdn.bootcss.com/twitter-bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

Html代码:

 <div class="container">
      <div class="row">
        <div class="col-lg-6" style="margin: 20px">
          <div class="input-group">
            <span class="input-group-btn"> <button class="btn btn-default" type="button">搜索</button> </span>
            <input type="text" v-model="text" class="form-control" placeholder="Search for..." />
          </div>
        </div>
        <table class="table table-hover">
          <thead>
            <tr>
              <th>序号</th>
              <th>姓名</th>
              <th>性别</th>
              <th>爱好</th>
              <th>年龄</th>
            </tr>
          </thead>
          <tbody>
            <tr v-for="(item, i) in searchResult" :key="i">
              <td>{{ i + 1 }}</td>
              <td>{{ item.name }}</td>
              <td>{{ item.sex }}</td>
              <td>{{ item.hobby }}</td>
              <td>{{ item.age }}</td>
            </tr>
          </tbody>
        </table>
      </div>
    </div>

Js代码:

var vm = new Vue({     
 el: '.container',      
data: {        
   text: '',        
   info: [{          
         name: '雷森',          
         sex: '男',          
         hobby: '打篮球',          
         age: '18'        
         }, 
         {          
         name: '刘伟',          
         sex: '男',          
         hobby: '旅游',          
         age: '24'        
         }, 
         {          
         name: '刘微',          
         sex: '女',          
         hobby: '旅游',          
         age: '24'        
         }, 
         {          
         name: '胡汉三',         
         sex: '男',          
         hobby: '美食',          
         age: '30'        
         }, 
         {          
          name: '张艺',          
          sex: '女',          
          hobby: '看韩剧',          
          age: '24'        
          }, 
          {          
          name: '欧阳',          
          sex: '女',           
          hobby: '环游世界',          
          age: '25'        
          }]      
             },      
      computed: {        
        searchResult() {          
            if (this.text) {            
            // console.log(this.info)            
                   return this.info.filter( item =>item.name.indexOf(this.text) != -1 || item.hobby.indexOf(this.text) != -1 || item.age.indexOf(this.text) != -1   );          
             } else {            
                 return this.info;          
             }        
            }      
         }    
}