<body> <div id="app"> <div class="panel panel-primary"> <div class="panel-heading"> <h3 class="panel-title">添加品牌</h3> </div> <div class="panel-body form-inline"> <label>Id: <input type="text" class="form-control" v-model="id"> </label> <label>Name: <input type="text" class="form-control" v-model="name"> </label> <input type="button" value="添加" class="btn btn-primary" @click="add"> <label>搜索名称关键字: <input type="text" class="form-control" v-model="keywords"> </label> </div> </div> <table class="table table-bordered table-hover table-striped"> <thead> <tr> <th>Id</th> <th>Name</th> <th>Ctime</th> <th>Operation</th> </tr> </thead> <tbody> <!-- <tr v-for="item in list" :key="item.id"> --> <tr v-for="item in search(keywords)" :key="item.id"> <td>{{item.id}}</td> <td >{{item.name}}</td> <td>{{item.ctime}}</td> <td> <a href="" @click.prevent="del(item.id)">删除</a> </td> </tr> </tbody> </table> </div> <script> var vm = new Vue({ el:'#app', data:{ id:'', name: '', keywords: '', list: [ { id:1, name:'奔驰', ctime: new Date() }, { id:2, name:'宝马', ctime: new Date() }, ] }, methods:{ add(){ var car = {id: this.id, name: this.name, ctime: new Date()} this.list.push(car) this.id = this.name = '' }, // splice用法: splice 粘接,胶接。 也就是去掉一部分,用其他东西替代拼接 // arr.splice(2,0,"William"); 第二个值 0,直接在index=2的地方插入新的值,没有删除旧的元素。 // George,John,Thomas,James,Adrew,Martin // George,John,William,Thomas,James,Adrew,Martin del(id){ // 数组的some(); 方法。 findIndex(); 方法类似,功能更单一,专门查找索引。 this.list.some((item, i) => { if(item.id == id){ this.list.splice(i, 1); // some(); 在数组里找符合条件的,return true 会立即终止这个数组的后续循环。 return true; }; }); }, search(keywords){ // 方法一: var newList = []; this.list.forEach(item => { // indexOf(); 检索字符串里是否包含关键字,包含则范围index值,不包含返回 -1. // console.log('曾经我也想过一了百了'.indexOf('')); // indexOf('') 返回值是 0 (搜索框空白,不是空格。) // 只要不是 -1,值都会被push到数组里。 所以搜索栏还没输关键字的时候,显示了默认的数据。 if(item.name.indexOf(keywords) != -1){ newList.push(item) }; }); return newList; // 方法二: // var newList = this.list.filter(item=>{ return this.list.filter(item=>{ // filter(); 遍历数组,返回符合条件的新数组。 // if(item.name.indexOf(keywords) != -1){} if(item.name.includes(keywords)){ return item; }; }); // return newList; 先用中间变量var = newList接收,再return 这里改写成直接return }, }, }); </script> </body>