基于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 相关文章推荐
js判断鼠标同时离开两个div的思路及代码
May 31 Javascript
JS获取DropDownList的value值与text值的示例代码
Jan 07 Javascript
js实现iframe跨页面调用函数的方法
Dec 13 Javascript
解决jquery实现的radio重新选中的问题
Jul 03 Javascript
实例讲解避免javascript冲突的方法
Jan 03 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
Jan 28 Javascript
JavaScript中获取时间的函数集
Aug 16 Javascript
js实现按钮控制带有停顿效果的图片滚动
Aug 30 Javascript
JS刷新父窗口的几种方式小结(推荐)
Nov 09 Javascript
AngularJS的ng-click传参的方法
Jun 19 Javascript
vue按需引入element Transfer 穿梭框
Sep 30 Javascript
在vue项目中,将juery设置为全局变量的方法
Sep 25 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
基于initPHP的框架介绍
2013/04/18 PHP
php使用curl模拟登录后采集页面的例子
2013/11/04 PHP
php使用exec shell命令注入的方法讲解
2013/11/12 PHP
php+mysql实现无限分类实例详解
2015/01/15 PHP
php 在线导入mysql大数据程序
2015/06/11 PHP
php7新特性的理解和比较总结
2019/04/14 PHP
javascript indexOf函数使用说明
2008/07/03 Javascript
通过JS 获取Mouse Position(鼠标坐标)的代码
2009/09/21 Javascript
几个javascript操作word的参考代码
2009/10/26 Javascript
jQuery hover 延时器实现代码
2011/03/12 Javascript
基于Jquery的开发个代阴影的对话框效果代码
2011/07/28 Javascript
js中传递特殊字符(+,&amp;)的方法
2014/01/16 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
jquery实现的图片点击滚动效果
2014/04/29 Javascript
JavaScript 函数模式详解及示例
2016/09/07 Javascript
网站发布后Bootstrap框架引用woff字体无法正常显示的解决方法
2016/11/24 Javascript
python每隔N秒运行指定函数的方法
2015/03/16 Python
Python 数据结构之旋转链表
2017/02/25 Python
Python Flask-web表单使用详解
2017/11/18 Python
python进行TCP端口扫描的实现
2018/12/21 Python
python实现一个简单的ping工具方法
2019/01/31 Python
python3.6下Numpy库下载与安装图文教程
2019/04/02 Python
python multiprocessing多进程变量共享与加锁的实现
2019/10/02 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
德国团购网站:Groupon德国
2018/03/13 全球购物
创造美妙香氛体验:Aera扩散器和香水
2018/11/25 全球购物
广告学专业应届生求职信
2013/10/01 职场文书
自动化专业本科毕业生求职信
2013/10/20 职场文书
道路交通安全实施方案
2014/03/12 职场文书
4s店销售经理岗位职责
2014/07/19 职场文书
2014应届本科生自我评价
2014/09/13 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书
长城导游词300字
2015/01/30 职场文书
禁毒心得体会范文
2016/01/15 职场文书
nginx实现发布静态资源的方法
2021/03/31 Servers
一次线上mongo慢查询问题排查处理记录
2022/03/18 MongoDB