Vue--findIndex方法的使用原理

原理:

// 根据id得到下标
// 默认去遍历list集合,将集合中的每个元素传入到function的item里,
var index = this.list.findIndex(function(item){
//根据item中的id属性来判断这个item是否是上面id中
//对应的数据,如果是返回一个true ,否返回false,继续下面的一条数据的遍历,以此类推
return item.id ==id; //如果返回true,那么findIndex方法会将这个item对应的id返回到外面接受
});

 

实例:

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 
  4 <head>
  5     <meta charset="UTF-8">
  6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8     <title>Document</title>
  9     <style>
 10         #app {
 11             width: 600px;
 12             margin: 10px auto;
 13         }
 14 
 15         .tb {
 16             border-collapse: collapse;
 17             width: 100%;
 18         }
 19 
 20         .tb th {
 21             background-color: #0094ff;
 22             color: white;
 23         }
 24 
 25         .tb td,
 26         .tb th {
 27             padding: 5px;
 28             border: 1px solid black;
 29             text-align: center;
 30         }
 31 
 32         .add {
 33             padding: 5px;
 34             border: 1px solid black;
 35             margin-bottom: 10px;
 36         }
 37     </style>
 38 </head>
 39 
 40 <body>
 41     <div id="app">
 42         <div class="add">
 43             编号: <input type="text" v-model="id">品牌名称: <input v-model="name" type="text">
 44             <button @click="add">添加</button>
 45         </div>
 46         <div class="add">品牌名称:<input type="text"></div>
 47         <div>
 48             <table class="tb">
 49                 <tr>
 50                     <th>编号</th>
 51                     <th>品牌名称</th>
 52                     <th>创立时间</th>
 53                     <th>操作</th>
 54                 </tr>
 55                 <tr v-if="list.length <= 0">
 56                     <td colspan="4">没有品牌数据</td>
 57                 </tr>
 58                 <!--加入: key="index" 时候必须把所有参数写完整  -->
 59                 <tr v-for="(item,key,index) in list" :key="index">
 60                     <td>{{item.id}}</td>
 61                     <td>{{item.name}}</td>
 62                     <td>{{item.ctime}}</td>
 63                     <!-- 使用vue来注册事件时,我们在dom元素中是看不到的 -->
 64                     <td><a href="javascript:void(0)" @click="del(item.id)">删除</a></td>
 65                 </tr>
 66             </table>
 67         </div>
 68 
 69     </div>
 70 </body>
 71 
 72 </html>
 73 <script src="vue2.4.4.js"></script>
 74 <script>
 75     var vm = new Vue({
 76         el: "#app",
 77         data: {
 78             id: 0,
 79             name: '',
 80             list: [
 81                 { "id": 1, "name": "it", "ctime": Date() },
 82                 { "id": 2, "name": "白龙", "ctime": Date() }
 83             ]
 84         },
 85         methods: {
 86             add: function () {
 87                 //将id和namepush到list数组中
 88                 this.list.push({ "id": this.id, "name": this.name, "ctime": Date() });
 89             },
 90             del:function(id) {
 91                
 92                 // 根据id得到下标
 93                 // 默认去遍历list集合,将集合中的每个元素传入到function的item里,
 94                 var index = this.list.findIndex(function(item){
 95                         //根据item中的id属性来判断这个item是否是上面id中
 96                         //对应的数据,如果是返回一个true ,否返回false,继续下面的一条数据的遍历,以此类推
 97                       return item.id ==id; //如果返回true,那么findIndex方法会将这个item对应的id返回到外面接受
 98                 });
 99                 // 根据下标在list集合中将对应的数据删除 
100                 // splice(开始删除的下标,删除的长度)               
101                 this.list.splice(index,1);    
102             }
103         }
104     });
105 
106 </script>

 

posted @ 2017-11-19 07:17  QinXiao.Shou  阅读(14158)  评论(0编辑  收藏  举报