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.The.Good.Parts阅读笔记(二)作用域&amp;闭包&amp;减缓全局空间污染
Nov 16 Javascript
javascript 全选与全取消功能的实现代码
Dec 23 Javascript
jQuery基础框架浅入剖析
Dec 27 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
Jan 09 Javascript
jQuery子窗体取得父窗体元素的方法
May 11 Javascript
jQuery表单验证简单示例
Oct 17 Javascript
canvas仿iwatch时钟效果
Mar 06 Javascript
使用jQuery卸载全部事件的思路详解
Apr 03 jQuery
详解如何在react中搭建d3力导向图
Jan 12 Javascript
webpack项目调试以及独立打包配置文件的方法
Feb 28 Javascript
javascript实现画板功能
Apr 12 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
Sep 05 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
德劲1102收音机的打理维修案例
2021/03/02 无线电
php 破解防盗链图片函数
2008/12/09 PHP
php将会员数据导入到ucenter的代码
2010/07/18 PHP
php使用json_encode对变量json编码
2014/04/07 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
详解PHP的Yii框架中扩展的安装与使用
2016/04/01 PHP
PHP连接MySQL进行增、删、改、查操作
2017/02/19 PHP
用javascript获取textarea中的光标位置
2008/05/06 Javascript
Jquery中对数组的操作代码
2011/08/12 Javascript
一款jquery特效编写的大度宽屏焦点图切换特效的实例代码
2013/08/05 Javascript
Node.js 8 中的 util.promisify的详解
2017/06/12 Javascript
AngularJS 教程及实例代码
2017/10/23 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
Three.js 再探 - 写一个微信跳一跳极简版游戏
2018/01/04 Javascript
Vue单页应用引用单独的样式文件的两种方式
2018/03/30 Javascript
vue.js图片转Base64上传图片并预览的实现方法
2018/08/02 Javascript
vue中使用element组件时事件想要传递其他参数的问题
2019/09/18 Javascript
Vue3为什么这么快
2020/09/23 Javascript
详解JavaScript中的this指向问题
2021/02/05 Javascript
[03:19]2016国际邀请赛中国区预选赛第四日TOP10镜头集锦
2016/07/01 DOTA
python创建列表和向列表添加元素的实现方法
2017/12/25 Python
python如何为创建大量实例节省内存
2018/03/20 Python
Python用字典构建多级菜单功能
2019/07/11 Python
python实现视频读取和转化图片
2019/12/10 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
2020/06/02 Python
英国领先的在线高尔夫设备零售商:Golfgeardirect
2020/12/11 全球购物
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
校园十大歌手策划书
2014/02/01 职场文书
个人党性剖析材料
2014/02/03 职场文书
2014年财务工作自我评价
2014/09/23 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
我的长征观后感
2015/06/09 职场文书
2019年度行政文员工作计划范本!
2019/07/04 职场文书
HTML基础-标签分类(闭合标签,空标签,块级元素,行内元素,行级块元素,可替换元素)
2021/03/31 HTML / CSS
Java比较两个对象中全部属性值是否相等的方法
2021/08/07 Java/Android
「月刊Comic Alive」2022年5月号封面公开
2022/03/21 日漫