社区
JavaScript
帖子详情
Array.sort()不能对汉字进行排序?
ptma
2003-12-08 04:49:24
如题
...全文
311
7
打赏
收藏
Array.sort()不能对汉字进行排序?
如题
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
meizz
2003-12-09
打赏
举报
回复
<script language=javascript>
function s1(a,b){return a-b}
function s2(a,b){return b-a}
var arr=[06,14,21,23,25,07,10,17,22,09,11,12,13,20,01,15,19,05,24,08,03,04,02,16,18]
alert("升序:"+arr.sort(s1))
alert("降序:"+arr.sort(s2))
</script>
ptma
2003-12-09
打赏
举报
回复
顶啊
ptma
2003-12-09
打赏
举报
回复
太多了。简单一些。
只要数组排序。
meizz
2003-12-08
打赏
举报
回复
<style>
tr {background-color: #FFFFFF; font-size: 10pt}
</style>
<table id=tab border=0 cellspacing=1 cellpadding=0 width=600 bgcolor=#D4D0C8>
<tr>
<td>序号</td>
<td>项目一</td>
<td>项目二</td>
<td>项目三</td>
<td>项目四</td>
<td>项目五</td>
</tr>
<tr>
<td>1</td>
<td>李白</td>
<td>12.34</td>
<td>Chinese</td>
<td>padding-bottom</td>
<td>TBODY</td>
</tr>
<tr>
<td>2</td>
<td>杜甫</td>
<td>2918</td>
<td>English</td>
<td>border-left-width</td>
<td>COLGROUP</td>
</tr>
<tr>
<td>3</td>
<td>白居意</td>
<td>911</td>
<td>America</td>
<td>border-bottom</td>
<td>FRAMESET</td>
</tr>
<tr>
<td>4</td>
<td>白求恩</td>
<td>149.12</td>
<td>Canada</td>
<td>text-align</td>
<td>VAR</td>
</tr>
<tr>
<td>5</td>
<td>李商隐</td>
<td>79.812</td>
<td>France</td>
<td>list-style</td>
<td>CAPTION</td>
</tr>
<tr>
<td>6</td>
<td>杜牧</td>
<td>416.03</td>
<td>Russia</td>
<td>margin</td>
<td>SUB</td>
</tr>
</table>
<table id=tab2 border=0 cellspacing=1 cellpadding=0 width=600 bgcolor=#D4D0C8>
<tr style="background-color: menu">
<td>序号</td>
<td>项目一</td>
<td>项目二</td>
<td>项目三</td>
<td>项目四</td>
<td>项目五</td>
</tr>
<tr>
<td>1</td>
<td>李白</td>
<td>12.34</td>
<td>Chinese</td>
<td>padding-bottom</td>
<td>TBODY</td>
</tr>
<tr>
<td>2</td>
<td>杜甫</td>
<td>2918</td>
<td>English</td>
<td>border-left-width</td>
<td>COLGROUP</td>
</tr>
<tr>
<td>3</td>
<td>白居意</td>
<td>911</td>
<td>America</td>
<td>border-bottom</td>
<td>FRAMESET</td>
</tr>
<tr>
<td>4</td>
<td>白求恩</td>
<td>149.12</td>
<td>Canada</td>
<td>text-align</td>
<td>VAR</td>
</tr>
<tr>
<td>5</td>
<td>李商隐</td>
<td>79.812</td>
<td>France</td>
<td>list-style</td>
<td>CAPTION</td>
</tr>
<tr>
<td>6</td>
<td>杜牧</td>
<td>416.03</td>
<td>Russia</td>
<td>margin</td>
<td>SUB</td>
</tr>
</table>
<SCRIPT LANGUAGE="JavaScript"><!--
var sortTable = null; //表格排序的构造对象
function meizzSortTable()
{
this.IE = (window.navigator.appName=="Microsoft Internet Explorer");
this.tables = new Array(); //所有要被排序的 Table
this.items = new Array(); //当前排序的那列的内容
this.heads = new Array();
this.numeric= false; //指排序的内容是否为数字
this.chinese= false; //排序内容存在中文字符
this.index = null; //当前正在排序的那个 Table 在表数组里的序号
this.sortWay= true; //为 false 时这倒排序
this.flagId = "sortFlagButtonId";
this.add = function(e)
{
if (!(e && e.tagName=="TABLE")){
alert("对不起!你传入的对象不是 TABLE ,不能进行排序操作"); return false;}
e.rows[0].className = "sortTableHead";
var len = e.rows[0].cells.length;
e.rows[0].className = "TableSort";
var m = this.tables.length;
for (var i=0; i<len; i++)
{
e.rows[0].cells[i].style.cssText = "border: 1px outset #D4D0C8; cursor: default";
if(e.rows[0].cells[i].innerText.trim() != "")
e.rows[0].cells[i].onclick = function(){sortTable.sortItemClick(this, m);}
}
this.tables[m] = e;
this.heads[m] = null;
}
this.sortItemClick = function(e, m)
{
var td = searchObjByTagName(e, "TD");
var tab= this.tables[m];
this.sortWay = (this.heads[m] == td) ? !this.sortWay : true;
this.heads[m] = td;
var n = td.cellIndex;
this.items.length = 0;
this.numeric = true;
this.chinese = false;
for (var i=1; i<tab.rows.length; i++)
{
var txt = tab.rows[i].cells[n].innerText.trim();
if ( this.numeric && isNaN(txt)) {this.numeric = false;}
if (!this.chinese && /[^\x00-\xff]+/.test(txt)) this.chinese = true;
this.items[this.items.length] = txt +"_"+ i;
}
this.sortFlag(this.sortWay, m);
if (sortTable.chinese && !sortTable.IE)
{
alert("对不起,对表格的排序功能只适用于IE浏览器!");
return false;
}
this.items = (this.sortWay) ? this.items.sort(this.condition) : this.items.sort(this.condition).reverse();
this.moveCell(tab, this.items);
}
this.sortFlag = function(B, m)
{
var str = "<input type=button id='"+ this.flagId +""+ m +"' align='absmiddle' "+
" value='"+ (B?"▲":"▼") +"' title='"+ (B?"正":"倒") +"排序' disabled "+
" style='font-size: 9pt; border:0; height: 12; background-color: transparent'>";
var e = getObjectById(this.flagId +""+ m); if(e) e.removeNode(true);
this.heads[m].insertAdjacentHTML("beforeEnd", str);
}
this.asc = function(str)
{
try{ execScript("strAsc = ASC('"+ str +"')", "vbscript");}
catch(e){window.status = "对不起!你的浏览器版本太低!不能支持排序!"; return false;}
if(strAsc < 0) strAsc += 65535; return strAsc;
}
this.condition = function(str1, str2)
{
var s1 = str1.substring(0, str1.lastIndexOf("_"));
var s2 = str2.substring(0, str2.lastIndexOf("_"));
if (sortTable.numeric) return(s1 - s2);
else
{
var length = (s1.length > s2.length) ? s1.length : s2.length;
for(var i=0; i<length; i++)
{
if(i==s1.length || i==s2.length) break;
var n1 = (sortTable.chinese) ? sortTable.asc(s1.charAt(i)) : s1.charCodeAt(i);
var n2 = (sortTable.chinese) ? sortTable.asc(s2.charAt(i)) : s2.charCodeAt(i);
if(n1 != n2) return n1-n2;
}
return(s1.length - s2.length);
}
}
this.moveCell = function(table, array)
{
var len = array.length, b = new Array();
for(var i=0; i<array.length; i++) b[i] = parseFloat(array[i].match(/\d+$/));
for(var i=1; i<len; i++)
{
if(b[i-1] != i)
{
table.moveRow(b[i-1], i);
for(var j=0; j<len; j++)
{
if(b[j]>=i && b[j]<b[i-1])
b[j]++;
}
b[i-1] = i;
}
}
}
} sortTable = new meizzSortTable();
function attachScripting()
{
sortTable.add(document.all.tab);
sortTable.add(document.all.tab2);
}
window.attachEvent("onload", attachScripting);
function getObjectById(id)
{
if (arguments.length == 0) return null;
/*@cc_on @*/ /*@if (@_jscript_version>=3) return document.all(id); @end @*/
if(window.navigator.appName=="Netscape" && parseInt(window.navigator.appVersion)>5)
return document.getElementById(id);
try {return document.getElementById(id);} catch(e){ return eval(id);}
}
String.prototype.trim = function(){return this.replace(/(^\s*)|(\s*$)/g,"");}
function searchObjByTagName(obj, tag)
{
while(obj!=null && typeof(obj.tagName) != "undefind")
{
if(obj.tagName == tag.toUpperCase()) return(obj);
obj = obj.parentElement;
}
return null;
}
//--></SCRIPT>
ptma
2003-12-08
打赏
举报
回复
麻烦具体些
给个例子
meizz
2003-12-08
打赏
举报
回复
默认方式排序的话, 是按 Unicode 的方式排序的, 在字母与数字来说排序是正确, 但是若是汉字的话, Unicode 与汉字拼音的顺序是不一样的, 所以排出来的序也是不对的, 解决的方法是碰到汉字时把 Unicode 转成 ASCII 码来做, 比如在JS里调用VBS里的 ASC() 函数等
springtime
2003-12-08
打赏
举报
回复
我的印象当中好象是可以的
不过他的排序规则不是按照汉字的习惯顺序排
JS实现中文
汉字
按拼音排序的方法
本文实例讲述了JS实现中文
汉字
按拼音排序的方法。分享给大家供大家参考,具体如下: 代码1,拼音排序: var
array
= ['武汉', '北京', '上海', '天津']; var result
Array
=
array
.
sort
( function compareFunction(param1, param2) { return param1.localeCompare(param2,"zh"); } ); console.log(result
Array
); 火狐浏览器 result
Array
结果为: [ '北京' , '上海' , '天津' ,'武汉' ] ; 代码2,
PHP中使用a
sort
进行中文排序失效的问题处理
PHP中有非常方便的对数组进行重新排序的方法——a
sort
,关于a
sort
的使用方法可以看 这里 。但是a
sort
对含有中文key的数组
进行排序
时,有时候并不是按照字母顺序。这主要是编码问题,如果编码为UTF-8,则不会按照字母顺序来排,解决方法是先转换成GBK编码,排序完再转回UTF-8. 示例:有一个数组$pass,结构类似为
Array
( [0] => stdClass Object ( [username] => 张三 [password] => DQ9uqQW2+UudOsZpQMnyvGG9L+RHZB6LRzBVDvAEL9uOBNf2zTWUnykhZFj
JS中使用
sort
结合localeCompare实现中文排序实例
说到表格排序,首先要说的就一定是数组的排序,因为数组排序是表格排序的基础。 JavaScript为数组提供了
sort
()方法用于表格排序,默认情况下该方法会使
Array
中的数组按照ASCII码的顺序进行排列,JavaScript还为数组提供了数组倒序的方法reverse()。 看一下示例: 代码如下: function
sort
Array
(){ var
array
Test = [“z”,5,2,”a”,32,3];
array
Test.
sort
(); alert(
array
Test.toString());
PHP与MYSQL中UTF8编码的中文排序实例
本文实例讲述了PHP与MYSQL中UTF8编码的中文排序方法,分享给大家供大家参考。具体实现方法如下: 一般来说,中文共有三种排序方式: 1.根据拼音排序; 2.根据笔画排序; 3.根据偏旁排序。 系统的默认排序方式为拼音排序了,这个也是我们常用的,下面介绍的就是按拼音排序了 1. 需要在php数组中用中文排序,但是一般使用utf8格式的文件,直接用a
sort
排序不行。用gbk和gb2312可以。这跟几种格式的编码有关系。gbk和gb2312本身的编码就是用拼音排序的。 复制代码 代码如下:function utf8_
array
_a
sort
(&$
array
) { if(!isset($arra
PHP与MYSQL中UTF8 中文排序示例代码
1. 需要在php数组中用中文排序,但是一般使用utf8格式的文件,直接用a
sort
排序不行。用gbk和gb2312可以。这跟几种格式的编码有关系。gbk和gb2312本身的编码就是用拼音排序的。 代码如下 function utf8_
array
_a
sort
(&$
array
) { if(!isset($
array
) || !is_
array
($
array
)) { return false; } foreach($
array
as $k=>$v) { $
array
[$k] = iconv('UTF-8', 'GBK//IGNORE',$v); } a
sort
($
array
); foreach(
JavaScript
87,910
社区成员
224,616
社区内容
发帖
与我相关
我的任务
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
分享
社区描述
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章