Vue列表过滤和列表排序

👌准备了班级同学的学号姓名等相关数据,要如何把数据快速的放入表格中?

  1. 首先在HTML结构中准备一个表格
  2. 接着在Vue的data中放入一个数组对象,把所有同学的数据通过对象的方式放入其中

  3. 最后在HTML结构中通过v-for列表渲染和使用插值语法去把数据展示在页面中

效果展示:

👌在这个基础上,想要通过输入框输入文字快速查找相应到的名字,要如何做?

  1. 首先要准备一个input输入框
  2. 其次在data中创建一个值为空字符串的属性与input中的value值通过v-model进行数据绑定
  3. 最后通过数组中的filter函数,去过滤返回符合条件表达式的数组

效果展示:

👌展示的所有信息中,想要按照学号升序或者年龄降序的方式进行重新排序,要如何做?

  1. 准备升序降序的按钮
  2. 在data中定义一个属性
  3. 通过事件处理去绑定按钮
  4. 在计算属性中使用数组sort函数,去为原来的数据重新排序,再输出

效果展示:

 代码展示:

<div class="box">
        <input type="text" placeholder="请输入名字" v-model="keyWord">
        <table>
            <tr>
                <th>学号</th>
                <th>姓名</th>
                <th>性别</th>
                <th>年龄</th>
            </tr>
            <tr v-for="(item,index) of filPerons" :key="item.id">
                <td>{{item.id}}</td>
                <td>{{item.name}}</td>
                <td>{{item.sex}}</td>
                <td>{{item.age}}</td>
            </tr>
        </table>
        <button @click="sortType = 0">原来顺序</button>
        <button @click="sortType = 1">年龄降序</button>
        <button @click="sortType = 2">学号升序</button>
</div>
    <script>
        Vue.config.productionTip = false,
            new Vue({
                el: '.box',
                data: {
                    keyWord: '',
                    sortType: 0, //1降序 2升序 0原顺序
                    persons: [{
                        id: '20223303',
                        name: '万旭川',
                        sex: '男',
                        age: 17

                    }, {
                        id: '20223305',
                        name: '王三',
                        sex: '男',
                        age: 19

                    }, {
                        id: '20223301',
                        name: '汪三成',
                        sex: '男',
                        age: 18

                    }, {
                        id: '20223302',
                        name: '王旭东',
                        sex: '男',
                        age: 22

                    }, {
                        id: '20223308',
                        name: '汪霜霜',
                        sex: '女',
                        age: 18

                    }, {
                        id: '20223304',
                        name: '孙新成',
                        sex: '男',
                        age: 20

                    }, {
                        id: '20223307',
                        name: '孙万东',
                        sex: '男',
                        age: 21

                    }, {
                        id: '20223306',
                        name: '万欣新',
                        sex: '女',
                        age: 20

                    }]
                },
                computed: {
                    filPerons() {
                        //filter函数是数组里的一个方法,主要起到过滤的作用,返回符合条件表达式的数组
                        const arr = this.persons.filter((item) => {
                                return item.name.indexOf(this.keyWord) !== -1
                            })
                            //判断一下是否需要排序
                        if (this.sortType) {
                            arr.sort((item1, item2) => {
                                return this.sortType === 1 ? item2.age - item1.age : item1.id - item2.id
                            })
                        }
                        return arr
                    }
                }
            })
    </script>

如果对你有帮助,请留下小心心!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 您好!如果您需要使用Vue根据后台返回的JSON数据生成动态列表,可以使用Vue的v-for指令结合数组方法,如下所示: 1.在Vue组件的data选项中定义一个数组用于存储JSON数据,例如: ``` data() { return { items: [] } } ``` 2.在Vue组件的mounted钩子函数中,使用axios或其他工具从后台获取JSON数据并将其存储在上述定义的数组中,例如: ``` mounted() { axios.get('/api/items').then(response => { this.items = response.data; }) } ``` 3.在Vue组件的模板中,使用v-for指令结合数组方法将JSON数据动态生成列表,例如: ``` <ul> <li v-for="item in items" :key="item.id">{{ item.name }}</li> </ul> ``` 在上述示例中,v-for指令用于遍历items数组,生成包含每个item对象的li元素,其中:key属性用于为每个列表项指定唯一的key值,以提高性能。 希望这能够帮助您! ### 回答2: Vue中可以根据后台返回的JSON动态生成列表。实现这个功能的关键是将后台返回的JSON数据以合适的格式绑定到Vue组件中的数据属性,然后使用循环指令(v-for)来遍历这个数据属性,生成相应的列表。 具体来说,可以按照以下步骤实现动态生成列表的功能: 1. 在Vue组件中定义一个data属性,用于存储后台返回的JSON数据。例如,可以定义一个名为"listData"的数组属性。 2. 在Vue的生命周期钩子函数中,使用异步请求(如axios、fetch等)从后台获取JSON数据,并将返回的数据赋值给"listData"属性。例如,在created钩子函数中可以使用axios发送异步请求,并在请求成功后将返回的JSON数据赋值给"listData"属性。 3. 在Vue组件的模板中,使用v-for指令遍历"listData"属性,生成相应的列表项。例如,可以使用如下代码片段遍历"listData"属性并生成一个无序列表: ``` <ul> <li v-for="item in listData">{{ item }}</li> </ul> ``` 上述代码中,v-for指令会遍历"listData"属性中的每个元素,依次生成相应的<li>元素。其中,"item"是一个临时变量,表示当前遍历的元素。 4. 最后,在Vue组件中进行渲染,即将组件实例挂载到DOM元素上,这样就能够看到动态生成的列表了。 综上所述,通过将后台返回的JSON数据绑定到Vue组件的数据属性中,并使用v-for指令遍历这个数据属性,就能够动态生成列表了。只需在适当的生命周期钩子函数中获取后台数据并赋值给数据属性,然后在模板中使用v-for指令生成相应的列表项即可。 ### 回答3: 在Vue中,我们可以根据后台返回的JSON数据动态生成列表。首先,我们需要通过Vue的数据绑定将后台返回的JSON数据存储在Vue实例的data属性中。假设后台返回的JSON数据包含一个数组,每个数组元素代表一个列表项,如下所示: ```javascript data: { items: [] // 存储后台返回的JSON数据 } ``` 接下来,我们可以使用Vue的v-for指令来遍历items数组,并将每个数组元素渲染为具体的列表项。在模板中,我们可以使用类似下面的代码来生成列表: ```html <ul> <li v-for="item in items" :key="item.id">{{ item.name }}</li> </ul> ``` 上面的代码中,v-for="item in items"表示遍历items数组,将每个数组元素赋值给变量item;:key="item.id"用于给每个列表项指定一个唯一的键,以优化列表渲染;{{ item.name }}表示渲染item对象中的name属性值。 当后台返回的JSON数据改变时,Vue会自动检测到data属性的变化并重新渲染列表,从而实现动态生成列表的效果。 除了简单的列表渲染外,我们还可以根据需要对列表进行排序过滤等操作。Vue提供了强大的计算属性和过滤器来帮助我们实现这些功能。 总结起来,我们只需要使用Vue的数据绑定和v-for指令,就可以轻松地根据后台返回的JSON数据动态生成列表。这使得前端开发变得更加简单和高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

super码力

么么哒,夏天来块儿冰西瓜!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值