vue 数据遍历筛选 过滤 排序的应用操作


Posted in Javascript onNovember 17, 2020

vue 中对v-for 遍历数据的处理方式 可以分为两类 :

一.对data 直接赋值(比较笨,但是比较直接)

<div id="app">
  <ul>
   <li v-for="item in list">{{item.n}}</li>
  </ul>
 </div>
 </body>
<script>
  var app=new Vue({
   el:'#app',
   data:{
    list:[{n:11},{n:22},{n:33},{n:44},{n:55},{n:66}],
   }
  })
 </script>

使用 app.list=[{n:44},{n:55},{n:66},{n:11},{n:22},{n:33}]直接赋值改变html页面的显示。

但是有时候这样会改动原数据,不太友善,很多时候我们只是想做个排序,数据筛选。

推荐使用第二种方法

方法二 : 使用computed 方法来过滤筛选数据;也可以使用methods 方式来筛选过滤数据

代码如下:

<body>
 <div id="app">
  <ul>
   <li v-for="item in list">{{item.n}}</li>
  </ul>
  <ul>
   <li v-for="item in listCmputed">{{item.n}}</li>
  </ul>
  <ul>
   <li v-for="item in listMe(list)">{{item.n}}</li>
  </ul>
 
 </div>
 </body>
<script>
  var app=new Vue({
   el:'#app',
   data:{
    list:[{n:11},{n:22},{n:33},{n:44},{n:55},{n:66}],
   },
   computed:{
    listCmputed:function(){
     return this.list.filter(function(item){
      return item.n>=33
     })
    }
   },
   methods:{
    listMe:function(list){
      return list.filter(function(item){
      return item.n<=33
     })
    }
   }
  })
 </script>

效果图

vue 数据遍历筛选 过滤 排序的应用操作

可以看到 computed 和methods对data的处理并没有影响到原数据。

但在实际应用中,常常会对一组数据进行 排序,筛选,过滤.....等一些列产品运行 提的需求;所以会有一些各种形状的按钮需要点击触发事件,我觉得用在外面声明一个变量放数据,根据事件对 vue 中的数据重新赋值 ,反而逻辑更清晰更便于维护。

补充知识:v-for循环遍历:vue-商品列表查询数据分类显示,json数据格式的解析

以饿了么来举例吧,我们要显示下图画线框里面的食物信息,数据是遍历json数据出来的,

vue 数据遍历筛选 过滤 排序的应用操作

json数据在呢?结构是酱紫的哭数组里面放了多个对象。对象里面放了数组的同时又放了若干对象,我们要实现上图的效果(将套餐类,特色鸡公煲套餐分类显示),就要把foods这个数组里面的name,description,tips显示出来尴尬

vue 数据遍历筛选 过滤 排序的应用操作

怎么做呢?

首先要用v-for得到goods.json里的每个对象,把它存到goods: [],数组中并返回。下面就是查询数据的的代码块了

data() {
  return {
  goods: [],
  }
 },
 
 created() {
  this.goodsList();
 
 },
 methods: {
  goodsList() {
  var tempList = [];
  var self = this;
  this.http.get('static/goods.json').then(function(response) {
   self.goods = response.data;
   console.log(self.goods)
 
  }).catch(function(error) {
   console.log(error);
  }) 
  } 
 } 

console.log(self.goods) 打印一下:有7条数据

vue 数据遍历筛选 过滤 排序的应用操作

然后,将这些数据通过htm标签拼接显示出来就好了,棒棒哒~~

。。。。。。。。。

吃瓜的:额,不对吧,这就显示了?有点太容易了吧。。。

吃瓜的:数据没解析完全吧?

吃瓜的。。。。

我:额。。。我去HTML里面继续解析。。

吃瓜的:吐血中。。。

接下来是我们切换下片场,来到HTML。。。

重头戏1:遍历goods数组,获取对象(上面刚刚返回出来了goods)

<dl v-for="items in goods"> <!--遍历goods数组-->

因为goods里面装的全是对象,所以就可以把“套餐类”和“特色鸡公煲套餐”显示粗来了:

<dt class="category_title"><strong class="category_name" >{{items.name}}</strong></dt>

重头戏2:遍历foods数组

<dd class="fooddetails_root clearfix" v-for="it in items.foods">

这就可以将foods数组里面的对象和数组获取到了,显示食物名称,描述,价格,月售

<!--显示食物名称-->
<p>{{it.name}}</p>  
<!--显示食物评价-->
<p>{{it.description}}</p>
<!--显示食物月售几份-->
<p>{{it.tips}}</p>
<!--食物价格-->
<p>{{it.specfoods[0].price}}</p>

OK了

下面是全部的html代码:

<div class="food_wrapper fl">
<dl v-for="items in goods">  <!--遍历goods数组-->
<dt class="category_title"><strong class="category_name" >{{items.name}}</strong></dt>
<!--得到对象里面的foods数组-->
<dd class="fooddetails_root clearfix" v-for="it in items.foods"> 
<!--显示图片-->
<span class="img_logo fl" style="height: 71px;"><img :src="it.image_path" alt="" /></span>
<section class="fooddetails_info fl">
<!--显示食物名称-->
<p>{{it.name}}</p>  
<!--显示食物评价-->
<p>{{it.description}}</p>
<!--显示食物月售几份-->
<p>{{it.tips}}</p>
<!--食物价格-->
<p>{{it.specfoods[0].price}}</p> 
 
</section>
</dd>
</dl> 
</div>

以上这篇vue 数据遍历筛选 过滤 排序的应用操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于jQuery的简单的列表导航菜单
Mar 02 Javascript
js中的getAttribute方法使用示例
Aug 01 Javascript
JavaScript中字符串分割函数split用法实例
Apr 07 Javascript
JavaScript 对象字面量讲解
Jun 06 Javascript
超实用的javascript时间处理总结
Aug 16 Javascript
BootStrap tooltip提示框使用小结
Oct 26 Javascript
angular实现IM聊天图片发送实例
May 08 Javascript
js实现扫雷小程序的示例代码
Sep 27 Javascript
详解JavaScript中的函数、对象
Apr 01 Javascript
Vue 实现前端权限控制的示例代码
Jul 09 Javascript
vue-form表单验证是否为空值的实例详解
Oct 29 Javascript
JavaScript声明变量和数据类型的转换
Apr 12 Javascript
解决vue-cli输入命令vue ui没效果的问题
Nov 17 #Javascript
详解Vue数据驱动原理
Nov 17 #Javascript
vue 解决IOS10低版本白屏的问题
Nov 17 #Javascript
JavaScript枚举选择jquery插件代码实例
Nov 17 #jQuery
html中创建并调用vue组件的几种方法汇总
Nov 17 #Javascript
解决vue项目中出现Invalid Host header的问题
Nov 17 #Javascript
vue的webcamjs集成方式
Nov 16 #Javascript
You might like
通过ODBC连接的SQL SERVER实例
2006/10/09 PHP
相对路径转化成绝对路径
2007/04/10 PHP
php更新mysql后获取影响的行数发生异常解决方法
2013/03/28 PHP
php使用websocket示例详解
2014/03/12 PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
2014/06/27 PHP
浅谈PHP中其他类型转化为Bool类型
2016/03/28 PHP
js获取下拉列表的值和元素个数示例
2014/05/07 Javascript
javascript实现依次输入input自动定焦
2014/12/23 Javascript
基于jquery步骤进度条源码分享
2015/11/12 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
浅谈JS原型对象和原型链
2016/03/02 Javascript
react实现pure render时bind(this)隐患需注意!
2017/03/09 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
2017/03/10 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
2017/03/22 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
vue实现手机号码抽奖上下滚动动画示例
2017/10/18 Javascript
jQuery动态操作表单示例【基于table表格】
2018/12/06 jQuery
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
2020/05/01 Javascript
vue 实现动态路由的方法
2020/07/06 Javascript
原生js实现放大镜组件
2021/01/22 Javascript
python通过自定义isnumber函数判断字符串是否为数字的方法
2015/04/23 Python
Python缩进和冒号详解
2016/06/01 Python
python3使用PyMysql连接mysql数据库实例
2017/02/07 Python
python 分离文件名和路径以及分离文件名和后缀的方法
2018/10/21 Python
python利用tkinter实现屏保
2019/07/30 Python
Keras 实现加载预训练模型并冻结网络的层
2020/06/15 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的代码
2020/11/30 HTML / CSS
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
美国手机支架公司:PopSockets
2019/11/27 全球购物
医学院毕业生自荐信
2013/11/08 职场文书
业务代表的岗位职责
2013/11/16 职场文书
计算机专业毕业生推荐信
2013/11/25 职场文书
优秀小学生事迹材料
2014/12/26 职场文书
外贸业务员岗位职责
2015/02/13 职场文书
golang中的空接口使用详解
2021/03/30 Python
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle