sort方法可用来对数组中的元素进行排序,会影响原数组,默认按照Unicode排序
在sort()函数中添加一个回调函数指定排序规则,回调函数需要定义两个形参,浏览器将会分别使用数组中的元素作为实参去调用回调函数,使用哪个元素不确定,但是数组中的a一定在b前面。
浏览器会根据回调函数的返回值决定元素的顺序。
(1)如果回调函数返回的是一个大于0的值,元素就会变换位置
(2)如果回调函数返回的是一个小于0的值,元素位置不变
(3)如果回调函数返回0,则认为两个元素相等
arr=[1,9,3,7,3,2]
arr.sort(function(a,b){
if(a>b){
return 1;
}else if(a<b){
return -1;
}else{
return 0;
})
或者
arr.sort(function(a,b){
return a-b; //升序排列
return b-a;//降序排列
})
console.log(arr)
与vue结合相关的例题

<div id="root">
<h2>人员信息</h2>
<input type="'text" placeholder="请输入名字" v-model="keyword">
<button @click="sortType=2">年龄升序</button>
<button @click="sortType=1">年龄降序</button>
<button @click="sortType=0">原顺序</button>
<ul>
<li v-for='(p,index) of filPersons' :key="index">
{{p.name}}-{{p.age}}-{{p.sex}}
</li>
</ul>
</div>
<script type='text/javascript'>
Vue.config.productionTip=false// 以阻止 vue 在启动时生成生产提示
//用computed实现
new Vue({
el:'#root',
data:{
keyword:'',
sortType:0,//0原顺序 1降序 2升序
persons:[
{id:'001',name:'马冬梅',age:'18',sex:'女'},
{id:'002',name:'周冬雨',age:'20',sex:'女'},
{id:'003',name:'周杰伦',age:'36',sex:'男'},
{id:'004',name:'温兆伦',age:'3',sex:'男'}
],
},
computed:{
/*
第一个return返回的是过滤所得到的值,储存在arr中,第二个return返回条件中最终的判断结果,最
后一个return返回到新的数组filPersons中最为最后真实页面所显示的结果,不要忘记写最后一个
return
*/
filPersons(){
const arr=this.persons.filter((p)=>{
return p.name.indexOf(this.keyword)!==-1
})
//判断一下是否需要排序 此处要记住返回值
if(this.sortType){
arr.sort((p1,p2)=>{
return this.sortType===1?p2.age-p1.age:p1.age-p2.age
}
)}
return arr
}
}
})
版权声明:本文为weixin_50443809原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。