js中数组排序
1、js中数组的排序,js中的自带排序方法 sort();我们一般知道代码代码如下
var array=[0,1,2,3,25,3,1];
array.sort();
foreach(var i in array)
{
alert(i.toString());
}
其实上面我们的排序是按照元素的ASCLL编码排序的;
2、sort()方法的深入,自定义排序方法
其实sort()方法支持我们按照自己的规则排序的。
使用格式:arrayObj.sort(sortfunction)
arrayObj 需要排序的数组
sortfunction 自己的排序规则;函数类型
例子:
function sortNumber(a,b)
{
return a - b
}
var array=[0,1,2,3,25,3,1];
array.sort(sortNumber); 自定义的排序方法将返回元素的顺序号,0两元素相等,1第一个大于第二个,-1第一个小于第二个(我们可以安照自己的需求定义满足自己的排序规则)
3、扩展如果数组的元素是汉字型的字符串则怎样排序
如果使用默认的排序,sort();按照编码排序,得到的结果发现没有明显的排序规律(是大家不能接受)
排序汉字的规则方法:
stringObject.localeCompare(target)localeCompare方法
说明比较结果的数字。如果 stringObject 小于 target,则 localeCompare() 返回小于 0 的数。如果 stringObject 大于 target,则该方法返回大于 0 的数。如果两个字符串相等,或根据本地排序规则没有区别,该方法返回 0。
方法注意:localeCompare() 方法提供的比较字符串的方法,考虑了默认的本地排序规则。
在中文操作系统下的排序规则 英文字母,汉字的首字母(A、B~~Z)(这种排序大家都满意)
代码:
function sortNumber(a,b)
{
return a.localeCompare(b);
}
var array=["a","我们","都爱","分享","编程","乐趣"];
array.sort(sortNumber);