需要排序的数据如下:
1、数组排序
let arr = [9, 2, 4, 6, 3]
// 正序
console.log(arr.sort((a, b) => a - b))
// 倒序
console.log(arr.sort((a, b) => b - a))
2、数组对象列表
let arr = [{ num: 9 }, { num: 2 }, { num: 4 }, { num: 6 }, { num: 1 }]
// 正序
console.log(arr.sort((a, b) => a.num - b.num))
// 倒序
console.log(arr.sort((a, b) => b.num - a.num))
3、数组对象列表,正则选中数字排序
let dataList = [
{ a: '文本文本' },
{ a: '文档文本' },
{ a: '文本1文本' },
{ a: '文本4文本' },
{ a: '文本2文本' },
{ a: '文本6文本' },
{ a: '文本9文本' },
{ a: '文本94文本' },
{ a: '文本33文本' }
]
思路: 给没有数字的填充0, 使用正则找到每一个字符串的数字, 给每一项添加一个字段, 数字作为值, 之后给 sort 方法传递个比较字段的函数, 最后删除该字段。
实现字符串排序
let reg = /\d+/;
dataList.forEach(item => {
if (reg.test(item.a)) {
item.id = parseInt(reg.exec(item.a)[0])
return;
}
item.id = 0;
})
dataList.sort((a, b) => a.id - b.id).forEach(item => Reflect.deleteProperty(item,'id'))
// 输出
console.log(dataList)