社区
JavaScript
帖子详情
Array.sort()不能对汉字进行排序?
ptma
2003-12-08 04:49:24
如题
...全文
494
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
打赏
举报
回复
我的印象当中好象是可以的
不过他的排序规则不是按照汉字的习惯顺序排
Wpf入门-xaml和布局容器
WPF入门——XAML和布局容器 XAML 1.XAML是对WPF程序的所用用户界面进行详细的定制。 2.它提供了一种便于扩展和定位的语法来定义和程序逻辑分离的用户界面,而这种实现方式和ASP.NET中的"代码后置"模型非常类似。 3.但是XAML并不是一种用于程序设计的语言,它的功能也不是为了执行应用程序逻辑。 说的通俗一点,WPF是一种框架,而在框架中布局元素的语言是XAML语言。 容器 主要是用于元素在窗体中的布局。 WPF中提供了许多的容器元素,wrappa
WPF入门——XAML和布局容器
WPF是微软推出的基于Windows Vista的用户界面框架;它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作。WPF和.NET中winForm是类似的。 XAML 1.XAML是对WPF程序的所用用户界面进行详细的定制。 2.它提供了一种便于扩展和定位的语法来定义和程序逻辑分离的用户界面,而这种实现方式和ASP.NET中的"代码后置"模型非常
C# WPF入门学习主线篇(十九)—— 布局管理实战『混合布局案例』
在《C# WPF入门学习主线篇(十九)—— 布局管理实战『混合布局案例』》这篇文章中,我们通过一个综合案例展示了如何使用多种WPF布局容器实现复杂的界面设计。本文详细介绍了如何创建一个登录界面,并使用 `Grid`、`StackPanel`、`Border` 和 `UniformGrid` 等布局容器进行布局管理。通过本篇文章,您将学会如何灵活运用布局容器,设计美观且实用的用户界面。
C# WPF入门学习主线篇(十二)—— Canvas布局容器
在《C# WPF入门学习主线篇(十二)—— Canvas布局容器》这篇文章中,我们详细介绍了WPF中的 `Canvas` 布局容器。本文涵盖了 `Canvas` 的基本概念、常见属性以及使用方法,通过具体的示例代码,展示了如何精确控制控件的位置。此外,还讨论了 `Canvas` 布局容器的优缺点,帮助读者在实际开发中做出更好的布局选择。
WPF XAML的基本语法
Windows Presentation Foundation (WPF) 的 XAML(eXtensible Application Markup Language)是一种用于定义用户界面(UI)的标记语言。XAML 使得 WPF 应用程序的开发更加直观和模块化。
JavaScript
87,988
社区成员
224,683
社区内容
发帖
与我相关
我的任务
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
分享
社区描述
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章