定义与用法:
sort() 方法用于对数组的元素进行排序,并返回数组。默认排序顺序是根据字符串UniCode码。
语法:
arrayObject.sort(sortby)
参数:
sortby 可选,用来规定排序的顺序,但必须是函数。
例一:
在js中我们可以对数组元素使用sort方法进行排序,如下:
var arr =[0,1,56,23,34,3] arr.sort() console.log(arr) //打印[0, 1, 23, 3, 34, 56]
解释:从案例中发现得到的结果并不是我们想要的,为什么呢?? 原因是在使用sort排序的时候它总会使用第一个字符的ASCII值来进行比较排序,所以就出现了这个结果,所以下面做了下改进分升序和降序的两种方式。代码改进如下:
//升序 var arr =[0,1,56,23,34,3] function sortNumber(a,b){ return a-b; } arr.sort(sortNumber) console.log(arr)//打印[0, 1, 3, 23, 34, 56] //降序 var arr =[0,1,56,23,34,3] function sortNumber(a,b){ return b-a; } arr.sort(sortNumber) console.log(arr)//打印[56, 34, 23, 3, 1, 0]
例二:
按照数组对象中某个属性值进行排序
const arr2 = [ { id: 10, flag: true }, { id: 5, flag: false }, { id: 6, flag: true }, { id: 9, flag: false } ]; const r = arr2.sort((a, b) => b.flag - a.flag);//如果这里想根据id进行排序就改成.id console.log(r); // [ // { id: 10, flag: true }, // { id: 6, flag: true }, // { id: 5, flag: false }, // { id: 9, flag: false } // ]
例三:
1.去除name相同的对象
2.且保留的是创建时间最早的对象
这里看一道题目,是一段大佬写的代码,写进总结里以供学习参考~
题目: var arr=[ { name: '玉骨遥寒薇结海报', created_at: '2021-06-04 04:54:06.164', }, { name: '玉骨遥寒薇结海报', created_at: '2021-06-04 04:52:49.753', }, { name: '玉骨遥寒薇结海报', created_at: '2021-06-04 05:02:02.398', }, { name: '公交车抛锚警民携手推车为考生开路', created_at: '2021-06-04 04:52:40.588', }, { name: '公交车抛锚警民携手推车为考生开路', created_at: '2021-06-04 05:07:21.587', }, ]
代码如下:
arr.reduce(function(s,v){ var itemIdx = s.findIndex(v1=>v1.name==v.name); if(itemIdx == -1){ s.push(v) }else{ var item = s[itemIdx]; if(v.created_at < item.created_at){ s.splice(itemIdx,1,v) } } return s },[])
打印结果:
以上是有关对sort()方法的学习和总结,希望对大家也有所帮助~ 感谢阅读