【www.bbyears.com--C语言】
最简单的二维数组排序
代码如下<script type="text/javascript">
var aa =[["a",3],["b",4],["c",2],["d",1]];
alert(aa.sort(function(x,y){return x[1]-y[1]}))
</script>
支持中文排序
比如
代码如下var arr = [["中", "国"], ["啊", "的"], ["哦", "的"]];
arr.sort(function(x, y){
return x[0].localeCompare(y[0]);
});
结果就会按第一列中文字的拼音排序,如果含有英文的话,默认是将英文放在前面,如果是纯英文的话,会按字母顺序来,大写排在小写的后面,这样就可以实现字符串的排序了,包括中文和中英混排。至于要降序排列的话,方法与上面相同,改成return y[0].localeCompare(x[0]); 即可。
可以达到我们的效果了,但是如果我想指定一个字段来进行排序呢,其它要不要排序就一个内容的需要排序,下面我自定了一个数组排序函数。
代码如下function listSortBy(arr, field, order){
var refer = [], result=[], order = order=="asc"?"asc":"desc", index;
for(i=0; i
refer[i] = arr[i][field]+":"+i;
}
refer.sort();
if(order=="desc") refer.reverse();
for(i=0;i
result[i] = arr[index];
}
return result;
}
测试方法
var a = [
{name:"hdj", age:28},
{name:"yim", age:25},
{name:"hdq", age:26}
];
a = listSortBy(a, "age", "desc");
/*
结果:
{name:"hdj", age:28},
{name:"hdq", age:26},
{name:"yim", age:25}
*/