基于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 相关文章推荐
2007/12/23更新创意无限,简单实用(javascript log)
Dec 24 Javascript
JQuery中serialize() 序列化
Mar 13 Javascript
jQuery固定元素插件scrolltofixed使用指南
Apr 21 Javascript
javaScript中slice函数用法实例分析
Jun 08 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
Sep 15 Javascript
JS实现的相册图片左右滚动完整实例
Nov 23 Javascript
canvas轨迹回放功能实现
Dec 20 Javascript
security.js实现的RSA加密功能示例
Jun 06 Javascript
js new Date()实例测试
Oct 31 Javascript
JavaScript实现商品评价五星好评
Nov 30 Javascript
微信小程序用户授权最佳实践指南
May 08 Javascript
Vue实现动态查询规则生成组件
May 27 Vue.js
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
Yii2使用表单上传文件的实例代码
2017/08/03 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
javaScript checkbox 全选/反选及批量删除
2010/04/28 Javascript
基于jquery实现的表格分页实现代码
2011/06/21 Javascript
Three.js源码阅读笔记(Object3D类)
2012/12/27 Javascript
JavaScript限定复选框的选择个数示例代码
2013/08/25 Javascript
JavaScript中诡异的delete操作符
2015/03/12 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
jQuery实现模拟flash头像裁切上传功能示例
2016/12/11 Javascript
详解PHP后期静态绑定分析与应用
2018/03/21 Javascript
使用Vue动态生成form表单的实例代码
2018/04/26 Javascript
教你如何用node连接redis的示例代码
2018/07/12 Javascript
javascript中call,apply,callee,caller用法实例分析
2019/07/24 Javascript
解决vuex刷新状态初始化的方法实现
2019/08/15 Javascript
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
2020/01/06 Javascript
ES6中new Function()语法及应用实例分析
2020/02/19 Javascript
[00:32]2018DOTA2亚洲邀请赛出场——VP
2018/04/04 DOTA
用Python展示动态规则法用以解决重叠子问题的示例
2015/04/02 Python
使用python检测主机存活端口及检查存活主机
2015/10/12 Python
python脚本设置系统时间的两种方法
2016/02/21 Python
Python的re模块正则表达式操作
2016/05/25 Python
python numpy 一维数组转变为多维数组的实例
2018/07/02 Python
Python Django切换MySQL数据库实例详解
2019/07/16 Python
使用Python自动生成HTML的方法示例
2019/08/06 Python
使用 Python 读取电子表格中的数据实例详解
2020/04/17 Python
什么是python的id函数
2020/06/11 Python
质检的岗位职责
2013/11/17 职场文书
数据员岗位职责
2013/11/19 职场文书
企业员工薪酬方案
2014/06/04 职场文书
同学聚会策划方案
2014/06/06 职场文书
关于美容院的活动方案
2014/08/14 职场文书
车间质检员岗位职责
2015/04/08 职场文书
pytest配置文件pytest.ini的详细使用
2021/04/17 Python
Oracle创建只读账号的详细步骤
2021/06/07 Oracle
Win10服务全部禁用了怎么启动?Win10服务全部禁用解决方法
2022/09/23 数码科技