1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title></title>
    6. </head>
    7. <body>
    8. <script type="text/javascript" src="https://unpkg.com/vue/dist/vue.js"></script>
    9. <div id="app">
    10. 过滤:<input type="text" v-model="keyword" >
    11. <button @click="sortype=1">正向排序</button>
    12. <button @click="sortype=2">逆向排序</button>
    13. <ul>
    14. <li v-for="(p,index) in newP">
    15. {{ p.name }} - {{ p.sex }} - {{ p.age }}
    16. </li>
    17. </ul>
    18. </div>
    19. <script type="text/javascript">
    20. var vm = new Vue({
    21. el:'#app',
    22. data : {
    23. keyword: '',
    24. //如果是0,默认不排序,1正序排列 2 逆序排列
    25. sortype: 0,
    26. persons: [
    27. {id: '001',name:'马冬梅', age:39, sex: '女'},
    28. {id: '002',name:'周冬雨', age:28, sex: '女'},
    29. {id: '003',name:'周杰伦', age:54, sex: '男'},
    30. {id: '004',name:'温兆伦', age:16, sex: '男'},
    31. ],
    32. },
    33. computed : {
    34. newP(){
    35. const that = this
    36. var y = this.persons.filter(function (p){
    37. return p.name.indexOf(that.keyword) !== -1;
    38. })
    39. if (this.sortype == 0) {
    40. return y
    41. } else if (this.sortype ==1 ){
    42. //正序排列
    43. var z = y.sort(function(a,b){return a.age-b.age})
    44. return z
    45. }else if (this.sortype == 2 ) {
    46. //逆序排列
    47. var z = y.sort(function(a,b){return b.age-a.age})
    48. return z
    49. }
    50. }
    51. }
    52. })
    53. </script>
    54. </body>
    55. </html>