js如何将一个数组按照自己固定的顺序排序?
在工作中遇到一个问题,在前端页面上,想把一个数组中的元素按照自己想要的顺序排序,研究了一下,收集了以下两种方案:
方法一:
1 2 | var obj=[ {name: "张三" ,age:12},{name: "李四" ,age:13},{name: "王五" ,age:18},{name: "张柳" ,age:11},{name: "李强" ,age:33},<br><br> ]; |
想要按照年龄的大小来排序,可以用sort方法:
function sortab(data){
return function(obj1,obj2){
var value1=obj1[data];
var value2=obj2[data];
if(value2<value1){
return 1
}else if(value2>value1){
return -1
}else{
return 0
}
}
}
obj.sort(sortab("age"))
console.log(obj) // [{name: "张柳", age: 11},{name: "张三", age: 12},{name: "李四", age: 13},{name: "王五", age: 18},{name: "李强", age: 33}]
方案二:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | var objs = [ { 'name' : 'A' , 'type' : 'fly' }, { 'name' : 'B' , 'type' : 'blur' }, { 'name' : 'C' , 'type' : 'wipe' }, { 'name' : 'D' , 'type' : 'cube' }, { 'name' : 'E' , 'type' : 'iris' }, { 'name' : 'F' , 'type' : 'fade' } ]; objs.sort( function (a,b){ // order是规则bai objs是需要排序的数du组 var order = [ "wipe" , "fly" , "iris" , "flip" , "cube" , "blur" , "zoom" , "fade" , "glow" , "rotate" ]; return order.indexOf(a.type) - order.indexOf(b.type); }); // 根据规则排序后zhi新的数组 var result = objs.map( function (a){ return a[ 'name' ]; }); |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步