使用vue实现数组排序输出
在学习vue指令的时候发现一个JavaScript数组的坑,记录一下
(1)数组排序处理
<div id="app"> <ul> <li v-for="item in sortItems"> {{item}} </li> </ul> </div> <script type="text/javascript"> var app=new Vue({ el:'#app', data:{ items:[20,23,7,89,66,45] }, computed:{ sortItems:function(){ return this.items.sort(); } }, });
结果如下:
为了解决这个问题做出如下处理:
<script type="text/javascript"> var app=new Vue({ el:'#app', data:{ items:[20,23,7,89,66,45] }, computed:{ sortItems:function(){ return this.items.sort(sortNumber); } }, }); // 排序处理 function sortNumber(a,b){ return a-b } </script>
处理后的结果:
(2)数组对象方法排序处理
<div id="app"> <ul> <li v-for="student in sortStudent"> {{student.name}} - {{student.age}} </li> </ul> </div> <script type="text/javascript"> var app=new Vue({ el:'#app', data:{ students:[ {name:'jspang',age:32}, {name:'Panda',age:30}, {name:'PanPaN',age:21}, {name:'King',age:45} ] }, computed:{ sortStudent:function(){ return sortByKey(this.students,'age'); } }, }); // 数组对象方法排序: function sortByKey(array,key){ return array.sort(function(a,b){ var x=a[key]; var y=b[key]; return ((x<y)?-1:((x<y)?1:0)); }); } </script>