基于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 相关文章推荐
JQuery this 和 $(this) 的区别
Aug 23 Javascript
12个非常有创意的JavaScript小游戏
Mar 18 Javascript
js点击button按钮跳转到另一个新页面
Oct 10 Javascript
jQuery子属性过滤选择器用法分析
Feb 10 Javascript
jQuery+HTML5加入购物车代码分享
Oct 29 Javascript
JS实现带关闭功能的阿里妈妈网站顶部滑出banner工具条代码
Sep 17 Javascript
js实现文字垂直滚动和鼠标悬停效果
Dec 31 Javascript
javascript中的作用域和闭包详解
Jan 13 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
Aug 16 Javascript
解决layui的radio属性或别的属性没显示出来的问题
Sep 26 Javascript
React实现类似淘宝tab居中切换效果的示例代码
Jun 02 Javascript
游戏开发中如何使用CocosCreator进行音效处理
Apr 14 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
德劲1103的维修打理经验
2021/03/02 无线电
用Flash图形化数据(二)
2006/10/09 PHP
彻底删除thinkphp3.1案例blog标签的方法
2014/12/05 PHP
学习php设计模式 php实现命令模式(command)
2015/12/08 PHP
Symfony2联合查询实现方法
2016/03/18 PHP
php htmlentities()函数的定义和用法
2016/05/13 PHP
php注册审核重点解析(数据访问)
2017/05/23 PHP
Jquery UI震动效果实现原理及步骤
2013/02/04 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
Web纯前端“旭日图”实现元素周期表
2017/03/10 Javascript
js仿微信抢红包功能
2020/09/25 Javascript
JS实现简单表格排序操作示例
2017/10/07 Javascript
使用typescript开发angular模块并发布npm包
2018/04/19 Javascript
layui use 定义js外部引用函数的方法
2019/09/26 Javascript
[14:56]教你分分钟做大人:巫医
2014/10/30 DOTA
[02:05]DOTA2完美大师赛趣味视频之看我表演
2017/11/18 DOTA
[01:04:22]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 IG vs EG
2018/04/01 DOTA
[47:35]VP vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
2017/06/15 Python
python增加矩阵维度的实例讲解
2018/04/04 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
2019/04/15 Python
Python应用实现双指数函数及拟合代码实例
2020/06/19 Python
Django --Xadmin 判断登录者身份实例
2020/07/03 Python
PyCharm 2020.2下配置Anaconda环境的方法步骤
2020/09/23 Python
使用简单的CSS3属性实现炫酷读者墙效果
2014/01/08 HTML / CSS
Sperry官网:帆船鞋创始品牌
2016/09/07 全球购物
Chicco婴儿用品美国官网:汽车座椅、婴儿推车、高脚椅等
2018/11/05 全球购物
英国休闲奢华的缩影:Crew Clothing
2019/05/05 全球购物
德国游戏机商店:Konsolenkost
2019/12/08 全球购物
XML文档面试题
2015/08/05 面试题
校园报刊亭的创业计划书
2014/01/02 职场文书
2014年销售部工作总结
2014/12/01 职场文书
2015年数学教师工作总结
2015/05/20 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
读《茶花女》有感:山茶花的盛开与凋零
2020/01/17 职场文书
win11开机发生死循环重启怎么办?win11开机发生死循环重启解决方法
2022/08/05 数码科技