vue2列表过滤排序(上)

简介: vue2列表过滤排序

vue中列表过滤

<body>
    <div id="app">
        <input type="text" v-model="searchInput">
        <ul>
            <li v-for="(item,index) in searchList" :key="index">
                {{item.name}}--{{item.price}}
            </li>
        </ul>
    </div>
</body>
<script src="./js/vue2.js"></script>
<script>
    var app = new Vue({
        el: '#app',
        data() {
            return {
                searchInput:'',
                goodsList:[
                    { name: '牛仔裤', price: '88元' },
                    { name: '运动裤', price: '67元' },
                    { name: '羽绒服', price: '128元' },
                    { name: '运动服', price: '100元' },
                ]
            }
        },
        computed:{
            searchList(){
                let list = this.goodsList.filter((item)=>{
                    return item.name.indexOf(this.searchInput)!==-1
                })
                return list;
            }
        }
    });
</script>

vue中列表排序

<body>
    <div id="app">
        <input type="text" v-model="inputValue" />
        <button @click="keyWord=1">升序</button>
        <button @click="keyWord=2">降序</button>
        <button @click="keyWord=0">原顺序</button>
        <ul>
          <li v-for="item in newList">{{item.name}}-{{item.price}}</li>
        </ul>
    </div>
</body>
<script src="./js/vue2.js"></script>
<script>
    var app = new Vue({
        el: '#app',
        data: {
            keyWord: 0,
            inputValue: '',
            list: [
            { name: '牛仔裤', price: 88 },
            { name: '运动裤', price: 67 },
            { name: '羽绒服', price: 128 },
            { name: '运动服', price: 100 },
            ],
        },
        computed: {
            newList() {
            const arr1 = this.list.filter((i) => {
                return i.name.indexOf(this.inputValue) !== -1;
            });
            if (this.keyWord) {
                arr1.sort((a1, a2) => {
                return this.keyWord === 1
                    ? a1.price - a2.price
                    : a2.price - a1.price;
                });
            }
            return arr1;
            },
        },
    });
</script>

vue中数据更新的问题

对象新增数据更新问题

  • 描述
  • 通过普通对象添加属性方法,Vue不能监测到且不是响应式
this.obj.name= '张三'

解决

  • Vue.set() / this.$set
this.$set(this.obj,'name','张三')
  • 注意
  • this.$set不能给vue实例的根数据对象添加属性
  • 数组数据更新问题
  • 描述
  • 直接通过数组索引值改变数组的数据,Vue监测不到改变
  • 实际在 js 内存已经把数据的第一项数据修改了
this.list[0] = { name: '李四',age: 20 };
  • 原因
  • 因为在vue中数组并没有跟对象一样封装有监测数据变化的getter、setter
  • 解决
  • Vue在数组的原始操作方法上包裹了重新解析模板的方法,
    也就是说我们在data里面的数组操作方法不是原生的,是vue封装过的
  • 哪些数组操作方法经过了封装?
push() 向数组的末尾添加一个或更多元素,并返回新的长度。
pop() 删除数组的最后一个元素并返回删除的元素
shift()  删除并返回数组的第一个元素
unshift()  向数组的开头添加一个或更多元素,并返回新的长度。
splice()  从数组中添加或删除元素。
sort()   对数组的元素进行排序
reverse() 反转数组的元素顺序。


相关文章
|
7月前
|
JavaScript
vue element plus Descriptions 描述列表
vue element plus Descriptions 描述列表
285 0
|
2月前
|
JavaScript API
vue尚品汇商城项目-day04【24.点击搜索按钮跳转后的页面商品列表、平台售卖属性动态展示(开发Search组件)】
vue尚品汇商城项目-day04【24.点击搜索按钮跳转后的页面商品列表、平台售卖属性动态展示(开发Search组件)】
63 1
vue尚品汇商城项目-day04【24.点击搜索按钮跳转后的页面商品列表、平台售卖属性动态展示(开发Search组件)】
|
3月前
|
JavaScript 前端开发
Vue学习笔记8:解决Vue学习笔记7中用v-for指令渲染列表遇到两个问题
Vue学习笔记8:解决Vue学习笔记7中用v-for指令渲染列表遇到两个问题
|
3月前
|
JavaScript 前端开发 API
Vue学习笔记7:使用v-for指令渲染列表
Vue学习笔记7:使用v-for指令渲染列表
|
4月前
|
JavaScript
Vue3描述列表(Descriptions)
该组件库包含 `Descriptions` 和 `DescriptionsItem` 两种组件,需配合使用。`Descriptions` 用于构建描述列表,提供标题、操作区、边框、垂直布局等配置;`DescriptionsItem` 作为列表项,可自定义标签和内容样式。支持响应式布局,并集成了多个实用工具函数,如节流、事件监听等。可通过属性灵活调整列表样式与布局。
112 3
Vue3描述列表(Descriptions)
|
3月前
|
JavaScript 前端开发 UED
组件库实战 | 用vue3+ts实现全局Header和列表数据渲染ColumnList
该文章详细介绍了如何使用Vue3结合TypeScript来开发全局Header组件和列表数据渲染组件ColumnList,并提供了从设计到实现的完整步骤指导。
|
4月前
|
JavaScript API
Vue学习之--------列表排序(ffilter、sort、indexOf方法的使用)、Vue检测数据变化的原理(2022/7/15)
这篇博客文章讲解了Vue中列表排序的方法,使用`filter`、`sort`和`indexOf`等数组方法进行数据的过滤和排序,并探讨了Vue检测数据变化的原理,包括Vue如何通过setter和数组方法来实现数据的响应式更新。
Vue学习之--------列表排序(ffilter、sort、indexOf方法的使用)、Vue检测数据变化的原理(2022/7/15)
|
4月前
|
JavaScript
Vue学习之--------列表渲染、v-for中key的原理、列表过滤的实现(2022/7/13)
这篇博客文章详细介绍了Vue中列表渲染的基础知识、`v-for`指令的使用、`key`的原理和列表过滤的实现。通过代码实例和测试效果,展示了如何遍历数组和对象、使用`key`属性优化渲染性能,以及如何实现列表的动态过滤功能。
Vue学习之--------列表渲染、v-for中key的原理、列表过滤的实现(2022/7/13)
|
4月前
|
JavaScript UED 开发者
精彩!Vue 实现消息列表向上无缝滚动!丝滑...
精彩!Vue 实现消息列表向上无缝滚动!丝滑...

热门文章

最新文章