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 相关文章推荐
JavaScript计划任务后台运行的方法
Dec 18 Javascript
javascript合并表格单元格实例代码
Jan 03 Javascript
jquery ui dialog替代confirm实例分析
Jan 25 Javascript
js实现按钮控制带有停顿效果的图片滚动
Aug 30 Javascript
JS实现焦点图轮播效果的方法详解
Dec 19 Javascript
JavaScript插件Tab选项卡效果
Nov 14 Javascript
浅谈Vue SSR 的 Cookies 问题
Nov 20 Javascript
微信小程序左滑动显示菜单功能的实现
Jun 14 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
May 18 Javascript
vue的滚动条插件实现代码
Sep 07 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
Oct 25 Javascript
Vue+Vant 图片上传加显示的案例
Nov 03 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
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
php生成图形(Libchart)实例
2013/11/06 PHP
destoon整合UCenter图文教程
2014/06/21 PHP
解析 thinkphp 框架中的部分方法
2017/05/07 PHP
PHP获取数组中单列值的方法
2017/06/10 PHP
PHP面向对象中new self()与 new static()的区别浅析
2017/08/17 PHP
认识延迟时间为0的setTimeout
2008/05/16 Javascript
javascript的parseFloat()方法精度问题探讨
2013/11/26 Javascript
jQuery1.9.1针对checkbox的调整方法(prop)
2014/05/01 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
JS锚点的设置与使用方法
2016/09/05 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
2016/12/01 Javascript
bootstrap组件之按钮式下拉菜单小结
2017/01/19 Javascript
jquery鼠标悬停导航下划线滑出效果
2017/09/29 jQuery
js动态添加表格逐行添加、删除、遍历取值的实例代码
2018/01/25 Javascript
微信小程序自定义select下拉选项框组件的实现代码
2018/08/28 Javascript
深入探讨JavaScript的最基本部分之执行上下文
2019/02/12 Javascript
详解Vue 如何监听Array的变化
2019/06/06 Javascript
React组件对子组件children进行加强的方法
2019/06/23 Javascript
vue实现一拉到底的滑动验证
2019/07/25 Javascript
vue中的v-if和v-show的区别详解
2019/09/01 Javascript
javascript实现京东快递单号的查询效果
2020/11/30 Javascript
Python实现统计英文单词个数及字符串分割代码
2015/05/28 Python
Python3.5 Pandas模块缺失值处理和层次索引实例详解
2019/04/23 Python
CSS3实现淘宝留白的方法
2020/06/05 HTML / CSS
详解通过变换矩阵实现canvas的缩放功能
2019/01/14 HTML / CSS
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
2012/10/27 面试题
质检员岗位职责
2013/12/17 职场文书
艺术学院毕业生求职信
2014/07/09 职场文书
会计学习心得体会
2014/09/09 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
2015年教师节慰问信
2015/03/23 职场文书
原告代理词范文
2015/05/25 职场文书
毕业生就业推荐表自我鉴定
2019/06/20 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs