美文网首页
过滤与排序

过滤与排序

作者: 牛耀 | 来源:发表于2018-09-28 22:45 被阅读0次
html:
<div id="demo">
    <input type="text" v-model="searchName">
    <ul>
        <li v-for="(p, index) in filterPersons" :key="index">
            {{index}}---{{p.name}}---{{p.age}}
        </li>
    </ul>
    <div>
        <button @click="setOrderType(1)">年龄升序</button>
        <button @click="setOrderType(2)">年龄降序</button>
        <button @click="setOrderType(0)">原本顺序</button>
    </div>
</div>
new Vue({
        el: '#demo',
        data: {
            searchName: '',
            orderType: 0,// 0代表原本、1代表升序、2代表降序
            persons: [
                {name: 'Tom', age:18},
                {name: 'Jack', age:16},
                {name: 'Bob', age:19},
                {name: 'Rose', age:17}
            ]
        },
        computed: {
            filterPersons(){
                // 取出相关的数据
                const {searchName, persons, orderType} = this;
                // 最终需要显示的数组
                let fPersons;
                // 对persons进行过滤
                fPersons = persons.filter(p => p.name.indexOf(searchName)!==-1);
                // 排序
                if(orderType!==0){
                    fPersons.sort(function(p1, p2){
                        // 1代表升序、2代表降序
                        if(orderType===2){
                            // 如果返回负数则p1在前,返回正数则p2在前
                            return p2.age - p1.age;
                        }else{
                            return p1.age - p2.age;
                        }
                    })
                }
                return fPersons;
            }
        },
        methods: {
            setOrderType(orderType){
                this.orderType = orderType;
            }
        }
    })

相关文章

网友评论

      本文标题:过滤与排序

      本文链接:https://www.haomeiwen.com/subject/jjmmoftx.html