js 排序 SORT 各种方法
1.普通排序
<script>
var array =[11,3,14,6,7,9];
array.sort(function(a,b){
return a-b;
});
alert(array);
</script>
2.排序json数组中对象的某个字段
<script>
var array = [
{name: 'a', phone: "13", value: 'val_4'},
{name: 'b', phone: "5", value: 'val_3'},
{name: 'd', phone:"9", value: 'val_2'},
{name: 'c', phone: "12" , value: 'val_1'},
{name: 'c', phone: "44" , value: 'val_1'},
{name: 'c', phone:"34" , value: 'val_1'},
{name: 'c', phone: "54" , value: 'val_1'}
]
array.sort(function(a,b){
return a["phone"]*1-b["phone"]*1;
});
document.write(strhtml)
</script>
3. 排序json数组中对象的某个字段带逗号
<script>
var data = [
{ ranking: 1, name: "Princeton University", count: "8,014"},
{ ranking: 2, name: "Harvard University", count: "19,882"},
{ ranking: 3, name: "Yale University", count: "12,109"},
{ ranking: 4, name: "Columbia University", count: "23,606"},
{ ranking: 4, name: "Stanford University", count: "18,136"},
{ ranking: 4, name: "University of Chicago", count: "12,539"},
{ ranking: 7, name: "Massachusetts Institute of Technology", count: "11,301"},
{ ranking: 8, name: "Duke University", count: "15,465"},
{ ranking: 8, name: "University of Pennsylvania", count: "21,358"}]
data.sort(function(a,b){
return ((a["count"].replace(",",""))*1)-((b["count"].replace(",","")*1));
});
var strhtml="";
for(var i=0; i<data.length; i++) {
strhtml += "<div class='item'><p>"+data[i].ranking+"</p><p>"+data[i].name+"</p><p>"+data[i].count+"</p></div>";
}
$(".table").append(strhtml);
</script>
4.排序星星
<script>
var arr =["*","##","&&","****","##*"];
arr[7]="**";
var newArr=[];
var newIndex=0;
//取出所有以*开头的数组元素
for(var index=0;index<arr.length;index++){
if(arr[index].startwith("*")){
newArr[newIndex]=arr[index];
newIndex++;
}
}
//或者给他们传个比较器
newArr.sort(function(a,b){
if(a.length>b.length){
return 1;//降序排列
}else{
return -1;//升序排列
}
});
//对所有的*的元素的按照长度来排序; 冒泡排序
for(var j=0;j<newArr.length;j++){
for(var k=1;k<newArr.length-1;k++){
if(newArr[j].length>newArr[k].length){
var temp="";
temp=newArr[j];
newArr[j]=newArr[k];
newArr[k]=temp;
}
}
}
</script>
浙公网安备 33010602011771号