vue实现多条件筛选(代码简洁)

这篇具有很好参考价值的文章主要介绍了vue实现多条件筛选(代码简洁)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

纯vue实现数据筛选逻辑功能,不依赖任何第三方插件、组件,复制粘贴开箱即用

vue实现多条件筛选,vue.js,javascript,前端文章来源地址https://www.toymoban.com/news/detail-675252.html

<template>
  <div id="app">
       <div class="container">
            <div class="CationBox">
              <div class="row">
                   <div class="name">平台:</div>
                   <div class="content">
                        <div v-for="(item,index) in PlatformList" :key="index" @click="PlatformVar=item"
                        :class="['item',PlatformVar==item?'actvCss':'']">{{item}}</div>
                   </div>
              </div>
              <div class="row">
                   <div class="name">类型:</div>
                   <div class="content">
                        <div v-for="(item,index) in TypeList" :key="index" @click="TypeVar=item"
                        :class="['item',TypeVar==item?'actvCss':'']">{{item}}</div>
                   </div>
              </div>
              <div class="row">
                   <div class="name">成色:</div>
                   <div class="content">
                        <div v-for="(item,index) in ConditionList" :key="index" @click="ConditionVar=item"
                        :class="['item',ConditionVar==item?'actvCss':'']">{{item}}</div>
                   </div>
              </div>
            </div>
            <!-- 商品展示 -->
            <div class="ContentBox">
                 <div class="DataListBox" v-if="ComDataList.length">
                      <div class="item" v-for="(item,index) in ComDataList" :key="index">
                            <div>{{item.Platform}}</div>
                            <div>{{item.Title}}</div>
                            <div>{{item.Condition}}</div>
                      </div>
                 </div>
                 <div v-else class="nullCss">暂无相关商品~</div>
            </div>
       </div>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        PlatformVar:"全部",  // 表示当前选中的平台
        TypeVar:"全部",      // 表示当前选中的类型
        ConditionVar:"全部", // 表示当前选中的成色
        PlatformList:["全部","淘宝","天猫","京东","闲鱼","转转"], // 平台
        TypeList:["全部","CPU","显卡","内存条","硬盘"], // 类型
        ConditionList:["全部","全新","打折","二手","停售"], // 成色
        DataList:[ // 模拟接口返回的数据结构
          {id:1,Title:"i9 13900k",Platform:"淘宝",Type:"CPU",Condition:"全新"},
          {id:2,Title:"i9 9900ks",Platform:"闲鱼",Type:"CPU",Condition:"停售"},
          {id:3,Title:"i9 11900k",Platform:"天猫",Type:"CPU",Condition:"全新"},
          {id:4,Title:"i5 13600k",Platform:"转转",Type:"CPU",Condition:"停售"},
          {id:5,Title:"i5 10400f",Platform:"京东",Type:"CPU",Condition:"全新"},
          {id:6,Title:"i5 10400f",Platform:"淘宝",Type:"CPU",Condition:"二手"},
          {id:7,Title:"i3 12100f",Platform:"闲鱼",Type:"CPU",Condition:"打折"},
          {id:8,Title:"i3 10105f",Platform:"淘宝",Type:"CPU",Condition:"二手"},
          {id:9,Title:"i3 10100f",Platform:"京东",Type:"CPU",Condition:"全新"},
          {id:10,Title:"Rtx 2060",Platform:"闲鱼",Type:"显卡",Condition:"二手"},
          {id:11,Title:"Rtx 2070",Platform:"转转",Type:"显卡",Condition:"二手"},
          {id:12,Title:"Rtx 2080",Platform:"淘宝",Type:"显卡",Condition:"打折"},
          {id:13,Title:"Gtx 1060",Platform:"淘宝",Type:"显卡",Condition:"全新"},
          {id:14,Title:"Gtx 1070",Platform:"闲鱼",Type:"显卡",Condition:"二手"},
          {id:15,Title:"Gtx 1080",Platform:"京东",Type:"显卡",Condition:"全新"},
          {id:16,Title:"Rtx 3060",Platform:"淘宝",Type:"显卡",Condition:"全新"},
          {id:17,Title:"Rtx 3070",Platform:"淘宝",Type:"显卡",Condition:"全新"},
          {id:18,Title:"Rtx 3090",Platform:"京东",Type:"显卡",Condition:"全新"},
          {id:19,Title:"爱国者 ddr4 2666",Platform:"京东",Type:"内存条",Condition:"全新"},
          {id:20,Title:"爱国者 ddr4 3000",Platform:"闲鱼",Type:"内存条",Condition:"二手"},
          {id:21,Title:"爱国者 ddr4 3200",Platform:"淘宝",Type:"内存条",Condition:"打折"},
          {id:22,Title:"英睿达 ddr4 2666",Platform:"淘宝",Type:"内存条",Condition:"停售"},
          {id:23,Title:"英睿达 ddr4 3000",Platform:"闲鱼",Type:"内存条",Condition:"二手"},
          {id:24,Title:"英睿达 ddr4 3200",Platform:"天猫",Type:"内存条",Condition:"全新"},
          {id:25,Title:"金士顿 ddr4 2666",Platform:"淘宝",Type:"内存条",Condition:"停售"},
          {id:26,Title:"金士顿 ddr4 3000",Platform:"闲鱼",Type:"内存条",Condition:"二手"},
          {id:27,Title:"金士顿 ddr4 3200",Platform:"淘宝",Type:"内存条",Condition:"打折"},
          {id:28,Title:"三星 512Gb",Platform:"天猫",Type:"硬盘",Condition:"全新"},
          {id:29,Title:"三星 256Gb",Platform:"闲鱼",Type:"硬盘",Condition:"二手"},
          {id:30,Title:"三星 128Gb",Platform:"淘宝",Type:"硬盘",Condition:"打折"},
          {id:31,Title:"七彩虹 512Gb",Platform:"闲鱼",Type:"硬盘",Condition:"二手"},
          {id:32,Title:"七彩虹 256Gb",Platform:"京东",Type:"硬盘",Condition:"全新"},
          {id:33,Title:"七彩虹 128Gb",Platform:"淘宝",Type:"硬盘",Condition:"全新"},
          {id:34,Title:"东芝 512Gb",Platform:"转转",Type:"硬盘",Condition:"全新"},
          {id:35,Title:"东芝 256Gb",Platform:"淘宝",Type:"硬盘",Condition:"二手"},
          {id:36,Title:"东芝 128Gb",Platform:"京东",Type:"硬盘",Condition:"停售"},
        ]
      };
    },
    computed: {
      ComDataList(){
        return this.DataList.filter((item) => {
        	if((this.PlatformVar=="全部"||this.PlatformVar==item.Platform)&&
        	   (this.TypeVar=="全部"||this.TypeVar==item.Type)&&
        	   (this.ConditionVar=="全部"||this.ConditionVar==item.Condition)){
        	    return item // 把符合条件的数据返回,模板中通过this.ComDataList可直接动态读取数据
        	}
        })
      },
    },
    mounted() {

    },
    methods: {

    }
  };
</script>
<style>
  * {
     font-size: 14px;
     color: #333;
     box-sizing: border-box;
   }
  .container{
    margin: 100px auto;
    width: 700px;
    border: 1px solid #ccc;
    border-radius: 3px;
  }
  .CationBox{
    width: 100%;
    border-bottom: 1px solid #ccc;
  }
  .row{
    width: 100%;
    height: 40px;
    display: flex;
    align-items: center;
    padding: 0px 10px;
  }
  .row > div{
    flex-shrink: 0;
  }
  .row .content{
    flex: 1;
    display: flex;
  }
  .row .content .item{
    border-radius: 3px;
    color: #666;
    padding: 5px 12px;
    font-size: 12px;
    cursor: pointer;
    user-select: none;
  }
  .row .content .actvCss{
    background: #39b8ff;
    color: #fff;
  }
  .ContentBox{
    width: 100%;
    height: 450px;
    overflow: auto;
    padding: 10px;
  }
  .DataListBox{
    width: 100%;
    display: flex;
    flex-wrap: wrap;
  }
 ::-webkit-scrollbar {
   display: none; /* Chrome Safari */
 }
  .DataListBox .item{
    padding: 2px 4px;
    flex-shrink: 0;
    width: 19%;
    height: 60px;
    color: #666;
    border-radius: 3px;
    border: 1px solid #ccc;
    margin-right: 1.25%;
    margin-bottom: 8px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
  }
  .DataListBox .item div{
    font-size: 12px;
  }
  .DataListBox .item:nth-child(5n){
    /* 需要一行显示几个商品,nth-child(5n)里的数字就设置成几n */
    margin-right: 0px;
  }
  .nullCss{
    margin: 60px auto;
    font-size: 14px;
    text-align: center;
    color: #999;
  }
</style>

到了这里,关于vue实现多条件筛选(代码简洁)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 21 个简洁的 JavaScript单行代码技巧

    JavaScript 发展至今已经变得越来越强大,且广泛用于前端和后端开发。 作为一名前端程序员,不断的学习精进技巧,了解JS的最新发展也是非常必要的,而简洁的一行代码示例就是很好的方法。 今天,我们有 21 个JavaScript单行代码技巧,增强我们对 JavaScript 的理解并帮助您编

    2024年02月08日
    浏览(39)
  • vue写法——使用js高阶函数实现多条件搜索功能

    🙂博主:小猫娃来啦 🙂本文核心: vue封装——使用js高阶函数实现多条件搜索功能 之前出过一个react写法的前端搜索(react写法——使用js高阶函数实现多条件搜索功能) 今天我们再研究一下vue中怎么实现。 react和vue有什么区别? 这个区别要细说可太多了,但是最终都能归

    2024年02月11日
    浏览(54)
  • 简明SQL条件查询指南:掌握WHERE实现数据筛选

    条件查询是用于从数据库中根据特定条件筛选数据行的一种方式,它避免了检索整个表中的数据。通常,使用 WHERE 子句来定义过滤条件,只有符合这些条件的数据行才会被返回。 SQL中的运算符有:=、!=、、 等,用于进行条件判断。 在逻辑运算中,常见的运算符包括: and:

    2024年02月09日
    浏览(70)
  • 前端开发——JavaScript的条件语句

      世界不仅有黑,又或者白 世界而是一道精致的灰  ——Lungcen     目录 条件判断语句 if 语句 if else 语句 if else if else 语句  switch语句 break case 子句 default语句 while循环语句 do while循环语句 for循环语句 for 循环中的三个表达式 for 循环嵌套 for 循环变体——for in for 循环

    2023年04月21日
    浏览(46)
  • 探索JavaScript中强大的三元运算符:简洁、灵活、提升代码效率

    三元运算是一种在编程中常见的条件表达式。它使用三个操作数进行条件判断,并返回两个值中的一个,具体取决于条件的真假。 三元运算符的优势:相比于使用传统的 if-else 语句,三元运算符可以简化代码并提高代码的可读性。它可以使条件判断和返回结果在一行内完成,

    2024年01月16日
    浏览(63)
  • 一个可以通过多个条件筛选的系统界面是如何实现的(springboot+mybatis)

    比如我们有一个订单记录管理界面 条件可以通过订单号、商品名称、创建日期范围、价格范围。。。来进行筛选查询。首先我们先确定数据库订单表(我这里就不做连表了,都放在一个表中)模拟一个订单表 order表 订单号     商品名称     创建日期     价格     地址  

    2024年02月13日
    浏览(42)
  • 「前端代码简洁之路」后台系统之详情页设计

    我就是被迷的那双眼。有时候需求来了,用熟悉的套路进行开发,确实很节省时间也能保证功能的稳定,但是这些开发的惯性无形中阻碍了我对技术的探索。 我一直想改造详情页,解放重复功能开发的劳动力,但是详情页一眼望都是内容平铺,好像并没有什么可做的代码设计

    2024年02月06日
    浏览(60)
  • 前端vue经典面试题78道(重点详细简洁)

    目录 1.自我介绍 2.vue面试题 1.v-show和v-if区别的区别: 2.为何v-for要用key 3.描述vue组件声明周期mm 单组件声明周期图 ​父子组件生命周期图 4.vue组件如何通信 5.描述组件渲染和更新的过程 1、vue 组件初次渲染过程 2、vue 组件更新过程 6.双向数据绑定v-model的实现原理 7.对mvvm的理

    2024年02月01日
    浏览(47)
  • 前端vue自定义简单实用下拉筛选 下拉菜单

    前端vue自定义简单实用下拉筛选 下拉菜单, 阅读全文下载完整代码请关注微信公众号: 前端组件开发 效果图如下:       #### 使用方法 ```使用方法 !-- titleArr: 选择项数组 dropArr: 下拉项数组 @finishDropClick: 下拉筛选完成事件-- ccDropDownMenu :titleArr=\\\"titleArr\\\" :dropArr=\\\"dropArr\\\" @finishDro

    2024年02月08日
    浏览(49)
  • js前端条件语句优化

    在实际开发中,由于应用需求可能存在多种情况场景,那处理时就需要列举所有对应的情况去处理,常见的处理可能会用到if…else去处理。但是如果条件判断太多,就会导致代码过于冗余难以维护,因此我们可以使用其他的方式去优化、较少代码冗余量。 使用 1.1 多个判断用

    2024年02月07日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包