数组、对象这些都是面试中不可避免的一些面试题
下面我们看一下面试遇到的一道面试题
要求:数组中包含数字、字母让你去排列顺序
我们很容易就想到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>
打印结果
希望对学习前端兄弟们有用