基于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 相关文章推荐
如何实现iframe(嵌入式帧)的自适应高度
Jul 26 Javascript
js实现运行代码需要刷新的解决方法
Aug 18 Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
Apr 29 Javascript
JS的encodeURI和java的URLDecoder.decode使用介绍
May 08 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
Jun 23 Javascript
JQuery简单实现锚点链接的平滑滚动
May 03 Javascript
详解javascript new的运行机制
Jan 26 Javascript
总结JavaScript三种数据存储方式之间的区别
May 03 Javascript
javascript iframe跨域详解
Oct 26 Javascript
JS扩展类,克隆对象与混合类实例分析
Nov 26 Javascript
详解vee-validate的使用个人小结
Jun 07 Javascript
微信小程序 wx.getUserInfo引导用户授权问题实例分析
Mar 09 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
彻底删除thinkphp3.1案例blog标签的方法
2014/12/05 PHP
分享10段PHP常用代码
2015/11/11 PHP
在IIS下安装PHP扩展的方法(超简单)
2017/04/10 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
javascript 控制弹出窗口
2007/04/10 Javascript
工作中常用到的JS表单验证代码(包括例子)
2010/11/11 Javascript
jquery ajax属性async(同步异步)示例
2013/11/05 Javascript
JS获取URL中的参数数据
2013/12/05 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
2015/08/10 Javascript
快速学习jQuery插件 jquery.validate.js表单验证插件使用方法
2015/12/01 Javascript
基于jquery实现百度新闻导航菜单滑动动画
2016/03/15 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
2016/06/03 Javascript
详细谈谈javascript的对象
2016/07/31 Javascript
正则中的回溯定义与用法分析【JS与java实现】
2016/12/27 Javascript
vue使用v-if v-show页面闪烁,div闪现的解决方法
2018/10/12 Javascript
JS实现的图片选择顺序切换和循环切换功能示例【测试可用】
2018/12/28 Javascript
Python内置函数—vars的具体使用方法
2017/12/04 Python
django利用request id便于定位及给日志加上request_id
2018/08/26 Python
Python列表list排列组合操作示例
2018/12/18 Python
Python selenium根据class定位页面元素的方法
2019/02/26 Python
如何实现Django Rest framework版本控制
2019/07/25 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
python爬虫中的url下载器用法详解
2020/11/30 Python
基于PyTorch中view的用法说明
2021/03/03 Python
使用phonegap检测网络状态的方法
2017/03/30 HTML / CSS
html5 更新图片颜色示例代码
2014/07/29 HTML / CSS
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
英国网上电器商店:Electricshop
2020/03/15 全球购物
法院实习人员自我鉴定
2013/09/26 职场文书
2016元旦文艺汇演主持词
2015/07/06 职场文书
男方家长婚礼致辞
2015/07/27 职场文书
高中生军训感言
2015/08/01 职场文书
2016大一新生入学教育心得体会
2016/01/23 职场文书
表扬信范文
2019/04/22 职场文书
创业计划书之烤红薯
2019/09/26 职场文书
python疲劳驾驶困倦低头检测功能的实现
2022/04/04 Python