本文最后更新于 304 天前,如有失效请评论区留言。
在 JavaScript 中,对数组进行排序有以下几种方式
使用 Array.prototype.sort()
方法:
sort()
方法会原地修改数组,根据指定的排序规则对数组元素进行排序,默认是将元素转换为字符串进行比较。可以传入一个比较函数来定义排序规则。
array.sort((a, b) => a - b); // 数字从小到大排序
示例
const array = [1,3,7,2,4,8]
array.sort((a, b) => a - b);
console.log(array)
> 1,2,3,4,7,8
使用扩展运算符
...
和 Array.prototype.sort()
方法进行不改变原数组的排序:
const sortedArray = [...array].sort((a, b) => a - b);
示例
const array = [1,3,7,2,4,8]
const sortedArray = [...array].sort((a, b) => a - b);
console.log(sortedArray)
> 1,2,3,4,7,8
使用 localeCompare()
方法
字符串排序方法
array.sort((a, b) => a.localeCompare(b)); // 字符串排序
```
示例
```js
const array = ['a', 'c', 'f', 'd', 'h', 'b']
array.sort((a, b) => a.localeCompare(b))
console.log(array)
> a,b,c,d,f,h
对象数组排序时
可以使用比较函数来指定排序规则:
array.sort((a, b) => a.property - b.property); // 根据对象属性值排序
将数组中的对象按照 sort 从小到大进行排序,这个是比较常见的需求
示例
const array = [
{
id:1,
cattegory:'衬衣',
sort:3
},
{
id:2,
cattegory:'鞋子',
sort:1
},
{
id:3,
cattegory:'外套',
sort:2
},
]
const sortArray = [...array].sort((a, b) => a.sort - b.sort)
for (let arr of sortArray) {
for (let key in arr) {
console.log(key, arr[key])
}
console.log('---------------')
}
>
id 2
cattegory 鞋子
sort 1
---------------
id 3
cattegory 外套
sort 2
---------------
id 1
cattegory 衬衣
sort 3
---------------