过滤数据以及数组去重。2.0vue -- 飞机票项目
来源:互联网 发布:快速备案域名 编辑:程序博客网 时间:2024/04/27 17:07
大家好! 我是杨小宝,项目马上结束,下几篇提供数据交互,以及渲染的难点。这一篇讲解过滤数据以及数组去重。
效果:
在项目中,我们会经常遇到 筛选 功能,那么 既然需要筛选,
我们的要的效果是什么?
知识:
created钩子函数 数组去重 数据“中转”
分析:
1.首先我们请求下的来的数据 我们要先渲染到页面 2.将我们的所有请求下来的数据(要按照项目需求,按照那个字符段进行分类)进行筛选 3.我们选中我们想要的那个机场后,所有数据变成我们想要的机场对应数据 4.点击清空数据后,还原之前的数据
Demo :
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title></title> <script type="text/javascript" src="vue.js"></script> <style type="text/css"> *{ margin: 0; padding: 0; } li{ list-style: none; padding: 10px 20px; border-bottom: 1px solid black } p{ color: #ff0000; display: inline-block; } h5{ padding-left: 100px; display: inline-block; padding-right: 100px; } span{ color: green; padding-left: 10px; } #box3{ margin-top: 50px; } #box2{ position: relative; } #box2>h2{ cursor: pointer; } .boxdim{ position: absolute; width: 400px; height: 300px; border: 1px solid #c8c8c8; box-shadow: 3px 3px 5px #c8c8c8; z-index: 99; background: #fff; } .boxdim a{ padding: 5px 10px; background: #000; color: #fff; text-decoration: none; position: absolute; right: 0; bottom: 0; } </style></head><body> <div id="box"> <div id="box2"> <h2 @click='boxBtn'>机场:(点击机场)</h2> <p>我选择的机场有哪些:<span v-for='cityAir in cityAirArr'>{{cityAir}}</span><span style="cursor: pointer;" @click='clearAll'>清空过滤数据</span></p> <div class="boxdim" v-show='boxdimShow'> <ul> <li v-for='city in airportArr'> <input type="checkbox" :value='city' v-model='airportName'> <label>{{city}}</label> </li> <a href="javascript:;" @click='boxOk'>完成</a> </ul> </div> </div> <div id="box3"> 请求下来的数据: <ul> <li v-for='list in lists'> <p>起飞城市:{{list.city}}</p> <h5>出发机场:{{list.airport}}</h5> <span>总价格:{{list.money}}</span> </li> </ul> </div> </div></body><script type="text/javascript"> let vm = new Vue({ el:'#box', data:{ // 所有数据 dataAll:[], // 数据中转 lists:[], // 机场数据 airportArr:[], // 机场筛选的box(div) boxdimShow:false, // input (复选框) 为true是 对应的 value 放进数组中 airportName:[], // 中转数据到页面的 (我选择的机场有哪些) cityAirArr:[] }, methods:{ // 这个是 (机场) 点击事件 ,显现与隐藏 boxBtn(){ if (this.boxdimShow == false) { this.boxdimShow = true }else{ this.boxdimShow = false } }, // 过滤完成的点击事件 boxOk(){ // v-model 绑定所有 复选框 如果选中 就会把value的值添加到数组中 console.log(this.airportName) this.cityAirArr = this.airportName this.boxdimShow = false; // 第六步 : 首先 我们要通过 this.airportName 或者 this.cityAirArr 进行判断 // 如果长度 不为0 就让他 进行 页面总数据的筛选 if (this.cityAirArr.length != 0) { this.lists = []; // 第七步 : 首先我们要循环 第一个数组就是 我们选中的数据的内容 // 在循环 第二个数组 就是我们总 数据的数组 进行一一对比 如果 我们选中的 // 机场数据 与 总数据一一比较后 把我们 想要的数据 在次push进我们的lists中 实现 // 我们的过滤数据 for (var i = 0; i < this.cityAirArr.length; i++) { for (var a in this.dataAll) { if (this.cityAirArr[i] == this.dataAll[a].airport) { this.lists.push(this.dataAll[a]) } } } }else{ this.lists = this.dataAll; } }, // 数据的还原 将我们所有数据全部清空,总内容再次赋值给lists clearAll(){ this.cityAirArr = []; this.lists = this.dataAll; this.airportName = []; } }, created(){ // 第一步 :模拟数据 假设 这个数组是我们请求下来的数据。 var ArrObj = [ {city:'北京',money:'1100',airport:'北京机场'}, {city:'上海',money:'1200',airport:'上海机场'}, {city:'成都',money:'1100',airport:'成都机场'}, {city:'广州',money:'2100',airport:'广州机场'}, {city:'北京',money:'1900',airport:'北京机场'}, {city:'北京',money:'1500',airport:'北京机场'}, {city:'上海',money:'1400',airport:'上海机场'}, {city:'成都',money:'1200',airport:'成都机场'}, {city:'北京',money:'1500',airport:'北京机场'}, {city:'上海',money:'1200',airport:'上海机场'}, ]; // 第二步 : 我们将数据做一次中转 赋值 给 dataAll this.dataAll = ArrObj; // 第三步 : 将我们数据 再次赋值 给lists 并渲染页面 (请看页面的 #box3) this.lists = this.dataAll; // 第四步: 将所有数据的机场信息 放进 要渲染的机场数组中(这里可以console一下,没有过滤) for (var i = 0; i < ArrObj.length; i++) { this.airportArr.push(ArrObj[i].airport) } console.log(this.airportArr) // 为过滤时的数据 //第五步: 将我们所有机场信息的数据 进行过滤(数组去重) for (var i = 0; i < this.airportArr.length; i++) { for (var j = i + 1; j < this.airportArr.length; j++) { if (this.airportArr[i] == this.airportArr[j]) { this.airportArr.splice(j,1); j --; } } } console.log(this.airportArr) //过滤后的数据 } })</script></html>
注意:
1.数据之间的转换,千万要命名好,最好在data里面用一个对象来直接命名 这一整块的数据。 2.主要是复习一下数组去重以及过滤我们想要的数据。 3.有些数据前端可以处理 我们就不要去麻烦后端。因为前端也很强大 4.如果有更简单的方法 或者说 vue 中的 filter 过滤更简单可以私信我 QQ 992262716
下一章,模糊搜索 简单处理 (跟百度搜索框差不多) vue2.0
感谢您的阅读,我是 小宝!
阅读全文
0 0
- 过滤数据以及数组去重。2.0vue -- 飞机票项目
- $.inArray jquery(以及数组去重)
- 中文分词之过滤候选词以及去重
- 数组去数组重
- 数组去重,json数组去重
- JavaScript数组去重、排序以及相关基础操作汇总
- js和jquery的数组过滤 grep()和filter() 数组去重 去 null undefind
- 数组去重
- 数组去重
- JS 数组去重
- 数组去重算法
- 数组去重
- js数组去重
- php 数组去重
- 数组去重
- 数组排序去重
- javascript数组去重
- json数组去重
- 被手机逼死?尼康宣布关闭中国相机工厂!
- Intellij Idea配置生成JPA实体类
- HCS08内部震荡RC时钟校正
- 如何js中判断页面上选择框中输入的两个日期的差值小于31
- 用户管理
- 过滤数据以及数组去重。2.0vue -- 飞机票项目
- java的值传递和引用传递
- Java 发送邮件
- Android颜色透明度百分比和十六进制对应关系
- 获取文件的原始文件类型
- 求n的幂
- 第一个Opengl
- 2.1 中位数、平均值、众数的总结
- 使用Dom4j生成xml文件(utf-8编码)