基于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利用构造函数和原型的方式模拟C#类的功能
Mar 06 Javascript
jQuery模拟黑客帝国矩阵效果实例
Jun 28 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
Sep 16 Javascript
浅谈JS中的bind方法与函数柯里化
Aug 10 Javascript
js实现返回顶部效果
Mar 10 Javascript
基于JavaScript实现图片连播和联级菜单实例代码
Jul 28 Javascript
addeventlistener监听scroll跟touch(实例讲解)
Aug 04 Javascript
node.js中TCP Socket多进程间的消息推送示例详解
Jul 10 Javascript
详解npm 配置项registry修改为淘宝镜像
Sep 07 Javascript
Vuerouter的beforeEach与afterEach钩子函数的区别
Dec 26 Javascript
微信小程序中的列表切换功能实例代码详解
Jun 09 Javascript
jQuery实现查看图片功能
Dec 01 jQuery
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
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
2013/06/29 PHP
windows7下安装php的imagick和imagemagick扩展教程
2014/07/04 PHP
PHP callback函数使用方法和注意事项
2015/01/23 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
PDO::query讲解
2019/01/29 PHP
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
JavaScript格式化日期时间的方法和自定义格式化函数示例
2014/04/04 Javascript
jQuery实现当前页面标签高亮显示的方法
2015/03/10 Javascript
Jquery 全选反选实例代码
2015/11/19 Javascript
JS延时提示框实现方法详解
2015/11/26 Javascript
属于你的jQuery提示框(Tip)插件
2016/01/20 Javascript
AngularJS实现Model缓存的方式
2016/02/03 Javascript
JavaScript Date对象详解
2016/03/01 Javascript
JavaScript数据类型学习笔记分享
2016/09/01 Javascript
Bootstrap Scrollspy源码学习
2017/03/02 Javascript
Node.js之网络通讯模块实现浅析
2017/04/01 Javascript
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
2017/11/09 jQuery
Bootstrap Fileinput 4.4.7文件上传实例详解
2018/07/25 Javascript
Nodejs把接收图片base64格式保存为文件存储到服务器上
2018/09/26 NodeJs
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
jQuery实现手风琴效果(蒙版)
2020/01/11 jQuery
[02:46]2014DOTA2国际邀请赛 选手为你解读比赛MVP充满梦想
2014/07/09 DOTA
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
2018/04/10 Python
python数字图像处理实现直方图与均衡化
2018/05/04 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
2018/10/17 Python
python3实现点餐系统
2019/01/24 Python
用Python获取摄像头并实时控制人脸的实现示例
2019/07/11 Python
Python3合并两个有序数组代码实例
2020/08/11 Python
如何利用Python写个坦克大战
2020/11/18 Python
html5新特性与用法大全
2018/09/13 HTML / CSS
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
介绍下WebSphere的安全性
2013/01/31 面试题
同学会主持词
2014/03/18 职场文书
员工离职证明范本
2015/06/12 职场文书
解约证明模板
2015/06/19 职场文书
Android基于Fresco实现圆角和圆形图片
2022/04/01 Java/Android