js、JavaScript 数组列表、数组对象列表排序, 字符串排序

需要排序的数据如下: 

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)

猜你喜欢

转载自blog.csdn.net/CSDN_33901573/article/details/126285993
今日推荐