基于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 相关文章推荐
插件:检测javascript的内存泄漏
Mar 04 Javascript
jQuery取得select选择的文本与值的示例
Dec 09 Javascript
node.js操作mongoDB数据库示例分享
Nov 26 Javascript
jQuery判断对象是否存在的方法
Feb 05 Javascript
js实现选中复选框文字变色的方法
Aug 14 Javascript
javascript与jquery动态创建html元素示例
Jul 25 Javascript
详解ES6之用let声明变量以及let loop机制
Jul 15 Javascript
Angular4学习笔记之实现绑定和分包
Aug 01 Javascript
JavaScript笛卡尔积超简单实现算法示例
Jul 30 Javascript
angular4中引入echarts的方法示例
Jan 29 Javascript
详解Vue源码学习之双向绑定
Apr 10 Javascript
判断JavaScript中的两个变量是否相等的操作符
Dec 21 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
php 空格,换行,跳格使用说明
2009/12/18 PHP
php计算程序运行时间的简单例子分享
2014/05/10 PHP
php验证邮箱和ip地址最简单方法汇总
2015/10/30 PHP
php文件上传的两种实现方法
2016/04/04 PHP
php intval函数用法总结
2019/04/14 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
js页面跳转常用的几种方式
2010/11/25 Javascript
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
JS取文本框中最小值的简单实例
2013/11/29 Javascript
JS实现倒计时和文字滚动的效果实例
2014/10/29 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
js实现对ajax请求面向对象的封装
2016/01/08 Javascript
微信小程序侧边栏滑动特效(左右滑动)
2017/01/23 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
JavaScript中this的用法及this在不同应用场景的作用解析
2017/04/13 Javascript
vue1.0和vue2.0的watch监听事件写法详解
2018/09/11 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
Python中的yield浅析
2014/06/16 Python
详解Python中的正则表达式的用法
2015/04/09 Python
Python中标准模块importlib详解
2017/04/16 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
2019/04/04 Python
ManoMano英国:欧洲第一家专注于DIY和园艺市场的电商平台
2020/03/12 全球购物
个人自我鉴定写法
2013/11/30 职场文书
心得体会范文
2014/01/04 职场文书
优秀信贷员先进事迹
2014/01/31 职场文书
乡镇四风对照检查材料
2014/08/31 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
大二学生自我检讨书
2014/10/23 职场文书
党支部书记岗位职责
2015/02/15 职场文书
入党团支部推荐意见
2015/06/02 职场文书
十月围城观后感
2015/06/08 职场文书
2015年党风廉政建设个人总结
2015/08/18 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书
​(迎国庆)作文之我爱我的祖国
2019/09/19 职场文书