基于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 相关文章推荐
用dom+xhtml+css制作的一个相册效果代码打包下载
Jan 24 Javascript
jquery实现网页查找功能示例分享
Feb 12 Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
Aug 15 Javascript
最好用的Bootstrap fileinput.js文件上传组件
Dec 12 Javascript
Vue.js如何优雅的进行form validation
Apr 07 Javascript
JavaScript实现无穷滚动加载数据
May 06 Javascript
extjs简介_动力节点Java学院整理
Jul 17 Javascript
vue init失败简单解决方法(终极版)
Dec 22 Javascript
vue .js绑定checkbox并获取、改变选中状态的实例
Aug 24 Javascript
JS中数组实现代码(倒序遍历数组,数组连接字符串)
Dec 29 Javascript
vue:el-input输入时限制输入的类型操作
Aug 05 Javascript
vue 解决data中定义图片相对路径页面不显示的问题
Aug 13 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
ThinkPHP验证码和分页实例教程
2014/08/22 PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
2015/10/16 PHP
中高级PHP程序员应该掌握哪些技术?
2016/09/23 PHP
JSON扫盲帖 JSON.as类教程
2009/02/16 Javascript
js 匿名调用实现代码
2009/06/19 Javascript
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
fckeditor粘贴Word时弹出窗口取消的方法
2014/10/30 Javascript
3种js实现string的substring方法
2015/11/09 Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
2016/05/21 Javascript
JavaScript进阶练习及简单实例分析
2016/06/03 Javascript
seajs模块之间依赖的加载以及模块的执行
2016/10/21 Javascript
JS实现css hover操作的方法示例
2017/04/07 Javascript
微信小程序movable view移动图片和双指缩放实例代码
2017/08/08 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
2018/02/03 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
Vue+axios封装请求实现前后端分离
2020/10/23 Javascript
使用Python脚本生成随机IP的简单方法
2015/07/30 Python
使用Python编写一个最基础的代码解释器的要点解析
2016/07/12 Python
Python实现的弹球小游戏示例
2017/08/01 Python
快速了解Python中的装饰器
2018/01/11 Python
程序员写Python时的5个坏习惯,你有几条?
2018/11/26 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
阿迪达斯荷兰官方网站:adidas荷兰
2018/03/16 全球购物
屈臣氏官方旗舰店:亚洲享负盛名的保健及美妆零售商
2019/03/15 全球购物
上学迟到的检讨书
2014/01/11 职场文书
产品生产计划书
2014/05/07 职场文书
保安公司服务承诺书
2014/05/28 职场文书
效能风暴心得体会
2014/09/04 职场文书
办公室务虚会发言材料
2014/10/20 职场文书
工作收入住址证明
2014/10/28 职场文书
2014年财务部工作总结
2014/11/11 职场文书
员工工作表扬信
2015/05/05 职场文书
人口与计划生育责任书
2015/05/09 职场文书
《有余数的除法》教学反思
2016/02/22 职场文书
启迪人心的励志语录:脾气永远不要大于本事
2020/01/02 职场文书
如何基于python实现单目三维重建详解
2022/06/25 Python