数组排序的一道面试题

数组、对象这些都是面试中不可避免的一些面试题
下面我们看一下面试遇到的一道面试题
要求:数组中包含数字、字母让你去排列顺序
我们很容易就想到sort方法可以进行排序,但是这里面还有个要求,字母
那么我们要怎么把字母数字进行排序呢
代码如下:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			let arr = [9,3,0,7,'a','z','c','e']
			arr.forEach((item) => {
				if (typeof item == 'string') {
					console.log(item.charCodeAt(0))
				}else{
					console.log(item.toString().charCodeAt(0))
				}
			})
			//上面运行结果可以看到0~9的ASCII为48~57,a~z为97~122可以根据这个排序(sort方法默认也是按这个方法排序)
			console.log('数字到字母',arr.sort())
			//下面方法需要先执行一次arr.sort()进行基本排序 再通过判断是字母还是数字进行一次排序
			//因为上面代码已经执行过一次arr.sort()(sort方法会改变原数组)所以下面就不用多写一次
			console.log('字母到数字',arr.sort((a, b) => {
				if (a.toString().charCodeAt(0) > 58 && b.toString().charCodeAt(0) < 58 
				 || a.toString().charCodeAt(0) < 58 && b.toString().charCodeAt(0) > 58) {//对比的两项类型不同
					return -1
				}else{
					return a - b
				}
			}))
		</script>
	</body>
</html>

打印结果
在这里插入图片描述
希望对学习前端兄弟们有用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值