基于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类 from qq
Nov 13 Javascript
关于取不到由location.href提交而来的上级页面地址的解决办法
Jul 30 Javascript
JQuery设置获取下拉菜单某个选项的值(比较全)
Aug 05 Javascript
jQuery检测输入的字符串包含的中英文的数量
Apr 17 Javascript
JS实现双击屏幕滚动效果代码
Oct 28 Javascript
利用JS屏蔽页面中的Enter按键提交表单的方法
Nov 25 Javascript
Vue结合原生js实现自定义组件自动生成示例
Jan 21 Javascript
JS中IP地址与整数相互转换的实现代码
Apr 10 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
Feb 26 Javascript
js提取中文拼音首字母的封装工具类
Mar 12 Javascript
vue 组件高级用法实例详解
Apr 11 Javascript
jQuery使用动画队列自定义动画操作示例
Jun 16 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
PHP Stream_*系列函数
2010/08/01 PHP
phpmail类发送邮件函数代码
2012/02/20 PHP
php如何执行非缓冲查询API
2016/07/22 PHP
php 输入输出流详解及示例代码
2016/08/25 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
2017/03/04 PHP
php实现session共享的实例方法
2019/09/19 PHP
js 禁止选择功能实现代码(兼容IE/Firefox)
2010/04/23 Javascript
jquery 全局AJAX事件使用代码
2010/11/05 Javascript
php与js的区别是什么
2013/08/05 Javascript
在javascript中实现函数数组的方法
2013/12/25 Javascript
JS代码防止SQL注入的方法(超简单)
2016/04/12 Javascript
无缝滚动的简单实现代码(推荐)
2016/06/07 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
2016/09/23 Javascript
使用vue实现点击按钮滑出面板的实现代码
2017/01/10 Javascript
React-router 4 按需加载的实现方式及原理详解
2017/05/25 Javascript
Vue 页面权限控制和登陆验证功能的实例代码
2019/06/20 Javascript
js中复选框的取值及赋值示例详解
2020/10/18 Javascript
[01:04:22]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 IG vs EG
2018/04/01 DOTA
python django 增删改查操作 数据库Mysql
2017/07/27 Python
Python异常处理操作实例详解
2018/08/28 Python
pandas的连接函数concat()函数的具体使用方法
2019/07/09 Python
Python 使用type来定义类的实现
2019/11/19 Python
使用keras实现孪生网络中的权值共享教程
2020/06/11 Python
CSS3 rgb and rgba(透明色)的使用详解
2020/09/25 HTML / CSS
html5教程实现Photoshop渐变色效果
2013/12/04 HTML / CSS
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
使用html5新特性轻松监听任何App自带返回键的示例
2018/03/13 HTML / CSS
Bally美国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/18 全球购物
怎么可以提高数据库查询数据的速度
2014/06/28 面试题
销售类个人求职信范文
2013/09/25 职场文书
咨询公司各岗位职责
2013/12/02 职场文书
商场端午节活动方案
2014/01/29 职场文书
中药学自荐信
2014/06/15 职场文书
品牌转让协议书
2014/08/20 职场文书
研究生论文答辩开场白
2015/05/27 职场文书
《角的度量》教学反思
2016/02/18 职场文书