Array.prototype.sort()排序,升降排序使用方法

sort() 方法对数组中的元素进行适当排序并返回数组。这种情况不一定稳定。默认排序顺序根据字符串 Unicode 代码点。

目录

 升序降序排序法

对象可以按照某个属性排序 


const months = ['March', 'Jan', 'Feb', 'Dec']
months.sort() // ['Dec', 'Feb', 'Jan', 'March']
console.log(months) // ["Dec", "Feb", "Jan", "March"]
 
const arr = [1, 30, 4, 21, 100000]
arr.sort()
console.log(arr) // [1, 100000, 21, 30, 4]

我们可以向 sort 方法传入一个指定按某种顺序进行排列的函数。

 升序降序排序法

// 按升序排序 从小到大排
arr.sort((a, b) => a - b) // [1, 4, 21, 30, 100000]
// 按降序排序 从大到小排
arr.sort((a, b) => b - a) // [100000, 30, 21, 4, 1]

注意:该方法会改变原数组。 

     在使用 Array.prototype.sort() 方法时,我们需要注意两点

    该方法默认会把数组中的所有元素先转换为 String 再排序。

    字符串根据 ASCII 码进行排序。

const months = ['March', 'Jan', 'Feb', 'Dec']
months.sort()
console.log(months) // ["Dec", "Feb", "Jan", "March"]

const arr = [1, 30, 4, 21, 100000]
array1.sort()
console.log(arr) // [1, 100000, 21, 30, 4]

    可以看到,原始值数组在排序时,会根据上面两点提到的规则进行排序。我们该如何解决?往下看。

    Array.prototype.sort() 是一个高阶函数,他可以传入一个指定按某种顺序进行排列的函数。

对象可以按照某个属性排序 

 根据不同的场景,您可能需要按键、值或日期字段对 JavaScript 数组对象进行排序。

 使用 Array.prototype.sort() 和 String.prototype.localeCompare() 对字符串数据进行排序。

let arr = [
  { name: 'HTML', dataTime: '1999-01-20' },
  { name : 'JavaScript', dataTime: '2023-07-22' },
  { name : 'CSS', dataTime: '2020-08-20' }
]
//按时间排序
const sortData = (data, order = 'asc') => {
  if(order == 'asc'){
    return data.sort((a, b) => a.dataTime.localeCompare(b.dataTime))
  } else {
    return data.sort((a, b) => b.dataTime.localeCompare(a.dataTime))
  }
  return data
}

console.log(sortData(arr))

 

 示例2:

	let arr2 = [{
					id:'001',
					name: 'HTML',
					dataTime: '1999-01-20'
				},
				{
					id:'003',
					name: 'JavaScript',
					dataTime: '2023-07-22'
				},
				{
					id:'004',
					name: 'vue',
					dataTime: '2022-08-20'
				},
				{
					id:'002',
					name: 'CSS',
					dataTime: '2020-08-20'
				},
			]
			const sortData2 = (data, order = 'asc') => {
				if (order == 'asc') {
					return data.sort((a, b) => a.id -b.id)
				} else {
					return data.sort((a, b) => b.id -a.id )
				}
				return data
			}

			console.log(sortData2(arr2))

 更多内容可查阅数组方法合集 数组方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值