123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>列表排序</title>
- <!-- 引入vue -->
- <script type="text/javascript" src="../js/vue.js"></script>
- </head>
- <body>
- <!-- 准备好一个容器 -->
- <div id="root">
- <h2>人员列表</h2>
- <input type="text" placeholder="请输入名字" v-model="keyWord"></input>
- <button @click="sortType=2">年龄升序</button>
- <button @click="sortType=1">年龄降序</button>
- <button @click="sortType=0">原顺序</button>
- <ul>
- <li v-for="(p,index) in filPersons" :key="p.id">
- {{p.name}}-{{p.age}}-{{p.sex}}
- </li>
- </ul>
- </div>
- </body>
- <script type="text/javascript">
- Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示
- new Vue({
- el: '#root',
- data: {
- keyWord: '',
- sortType:0, //0代表原顺序 1代表降序 2代表升序
- persons: [
- { id: '001', name: '马冬梅', age: 30, sex: '女' },
- { id: '002', name: '周冬雨', age: 31, sex: '女' },
- { id: '003', name: '周杰伦', age: 18, sex: '男' },
- { id: '003', name: '温兆伦', age: 19, sex: '男' }
- ]
- },
- computed: {
- filPersons() {
- const arr = this.persons.filter((p) => { //这里的return是计算属性规定的,要返回一个值
- return p.name.indexOf(this.keyWord) !== -1 //这里的return是filter规定的,要返回一个过滤的条件
- })
- //判断一下是否需要排序
- if(this.sortType){
- arr.sort((p1,p2)=>{
- return this.sortType === 1 ? p2.age-p1.age : p1.age-p2.age
- })
- }
- return arr
- }
- }
- })
- </script>
- </html>
|