基于JS实现数字+字母+中文的混合排序方法


Posted in Javascript onJune 06, 2016

在上篇文章给大家介绍了JavaScript sort数组排序方法和自我实现排序方法小结,用自己的方法实现了数字数组的排序。

当然,实际运用中,我还是会使用sort方法更加方便.但是,我上一篇博文,仅仅是实现了数字排序,而srot方法默认可是能给字母实现排序的哦!而我的代码只能排序数字,看起来还是弱弱的.

所以,我得加上能排字母甚至中文的排序方法.

实现代码

$(function(){
var arr = ["Jack","Book","Fung",76,"Love","Mark","中国","china","phone","刘德华"];
console.log('原数组');
console.log(arr);
console.log('for方法从小到大排序');
console.log(arrSortMinToMax(arr));
console.log('for方法从大到小排序');
console.log(arrSortMaxToMin(arr));
console.log('原数组');
console.log(arr);
});
function arrMinNum(arr){
var minNum = Infinity, index = -1,minVul = "";
for (var i = 0; i < arr.length; i++) {
if (typeof(arr[i]) == "string") {
if (arr[i].charCodeAt()<minNum) {
minNum = arr[i].charCodeAt();
minVul = arr[i];
index = i;
}
}else {
if (arr[i]<minNum) {
minNum = arr[i];
minVul = arr[i]
index = i;
}
}
};
return {"minNum":minVul,"index":index};
}
function arrSortMinToMax(arr){
var arrNew = [];
var arrOld = arr.concat();
for (var i = 0; i < arr.length; i++) {
arrNew.push(arrMinNum(arrOld).minNum);
arrOld.splice(arrMinNum(arrOld).index,1)
};
return (arrNew);
}
function arrMaxNum(arr){
var maxNum = -Infinity, index = -1,maxVul = "";
for (var i = 0; i < arr.length; i++) {
if (typeof(arr[i]) == "string") {
if (arr[i].charCodeAt()>maxNum) {
maxNum = arr[i].charCodeAt();
maxVul = arr[i];
index = i;
}
}else {
if (arr[i]>maxNum) {
maxNum = arr[i];
maxVul = arr[i];
index = i;
}
}
};
return {"maxNum":maxVul,"index":index};
}
function arrSortMaxToMin(arr){
var arrNew = [];
var arrOld = arr.slice(0);
for (var i = 0; i < arr.length; i++) {
arrNew.push(arrMaxNum(arrOld).maxNum);
arrOld.splice(arrMaxNum(arrOld).index,1);
};
return (arrNew);
}

运行截图如下:

基于JS实现数字+字母+中文的混合排序方法

排序原理

如果是数字,则直接是数字进行比对

如果是字符串,则使用charCodeAt()转换成Unicode编码进行排序.

Unicode 是 0 - 65535 之间的整数

其他说明

按照正常的排序逻辑,应该是:数字比一切字母都小,字母比一切中文都小,中文应该按照首字拼音的首字母排序.

我的这段代码除了字母比一切中文都小这一条实现了,其他都没有实现.

逻辑也应该可以实现,把数字字母中文分别找出来,数字跟数组进行比较,字母跟字母比较,中文跟中文比较,然后拼接数组

中文获取首字的首字母可能稍微麻烦一点.

汉字居然可以直接比对的.

基于JS实现数字+字母+中文的混合排序方法

如上图所示,张飞想要做老大是有道理的.JavaScript终于在千年之后为张飞正名,当年他就应该是做老大的!~

Javascript 相关文章推荐
原生javascript图片自动或手动切换示例附演示源码
Sep 04 Javascript
JavaScript代码复用模式详解
Nov 07 Javascript
JavaScript 中对象的深拷贝
Dec 04 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
Mar 08 Javascript
详解vue-cli本地环境API代理设置和解决跨域
Sep 05 Javascript
详解javascript常用工具类的封装
Jan 30 Javascript
JS实现的3des+base64加密解密算法完整示例
May 18 Javascript
iView框架问题整理小结
Oct 16 Javascript
小程序转发探索示例
Feb 19 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
May 02 Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
Dec 09 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
Mar 10 Javascript
jquery树形菜单效果的简单实例
Jun 06 #Javascript
逻辑表达式中与或非的用法详解
Jun 06 #Javascript
node.js 中国天气预报 简单实现
Jun 06 #Javascript
JS中mouseover和mouseout多次触发问题如何解决
Jun 06 #Javascript
js获取元素的外链样式的简单实现方法
Jun 06 #Javascript
node.js cookie-parser之parser.js
Jun 06 #Javascript
gulp-htmlmin压缩html的gulp插件实例代码
Jun 06 #Javascript
You might like
ajax取消挂起请求的处理方法
2013/03/18 PHP
11个PHPer必须要了解的编程规范
2014/09/22 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
2016/09/23 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
2017/02/28 PHP
Jsonp 跨域的原理以及Jquery的解决方案
2011/06/27 Javascript
JQUERY 设置SELECT选中项代码
2014/02/07 Javascript
jQuery针对各类元素操作基础教程
2014/08/29 Javascript
jQuery+PHP打造滑动开关效果
2014/12/16 Javascript
javascript控制图片播放的实现代码
2020/07/29 Javascript
jquery实现很酷的网页顶部图标下拉菜单效果
2015/08/22 Javascript
AngularJS身份验证的方法
2016/02/17 Javascript
AngularJS指令详解及示例代码
2016/08/16 Javascript
总结Javascript中的隐式类型转换
2016/08/24 Javascript
javascript的几种写法总结
2016/09/30 Javascript
Bootstrap实现带暂停功能的轮播组件(推荐)
2016/11/25 Javascript
vue 开发一个按钮组件的示例代码
2018/03/27 Javascript
JavaScript封闭函数及常用内置对象示例
2019/05/13 Javascript
Python 数据结构之旋转链表
2017/02/25 Python
Python中eval带来的潜在风险代码分析
2017/12/11 Python
python利用小波分析进行特征提取的实例
2019/01/09 Python
pandas修改DataFrame列名的实现方法
2019/02/22 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
详解python statistics模块及函数用法
2019/10/27 Python
python 函数嵌套及多函数共同运行知识点讲解
2020/03/03 Python
python中四舍五入的正确打开方式
2021/01/18 Python
一套VC试题
2015/01/23 面试题
学雷锋树新风演讲稿
2014/05/10 职场文书
建筑安全生产目标责任书
2014/07/23 职场文书
给领导的感谢信范文
2015/01/23 职场文书
高考学习决心书
2015/02/04 职场文书
我的生日感言
2015/08/03 职场文书
丧事答谢词大全
2015/09/30 职场文书
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
2021/04/24 Python
教你用Python写一个植物大战僵尸小游戏
2021/04/25 Python
CSS3实现列表无限滚动/轮播效果
2021/06/23 HTML / CSS
python+pytest接口自动化之token关联登录的实现
2022/04/06 Python