sort方法排序會不會修改數(shù)組本身 基于jquery的表格排序?
基于jquery的表格排序?$(function(){//存入直接點擊列的每一個TD的內容;varaTdCont[];//再點列的索引值varthanh0//然后再對TR進行排序varsetTrInd
基于jquery的表格排序?
$(function(){
//存入直接點擊列的每一個TD的內容;
varaTdCont[];
//再點列的索引值
varthanh0
//然后再對TR進行排序
varsetTrIndexfunction(tdIndex){
for(i0;iaTdCont.length;i){
vartrContaTdCont[i];
$(tbodytr).each(function(){
varthisText$(this).children(td:eq(tdIndex)).text();
if(thisTexttrCont){
$(tbody).append($(this));
}
});
}
}
//比較比較函數(shù)的參數(shù)函數(shù)
varcompare_downfunction(a,b){
returna-b;
}
varcompare_upfunction(a,b){
returnb-a;
}
//比較函數(shù)
varfSortfunction(compare){
(compare);
}
//木盒TD的值,并存進數(shù)組,接過前二個TD值;
varfSetTdContfunction(thIndex){
$(tbodytr).each(function(){
vartdCont$(this).children(td:eq(thIndex)).text();
aTdCont.push(tdCont);
});
}
//點擊時必須執(zhí)行的函數(shù)
varclickFunfunction(thindex){
aTdCont[];
//某些再點當前列的索引值
varnThCountthindex;
//動態(tài)創(chuàng)建sortTh函數(shù)接過要比較好的數(shù)據(jù)
fSetTdCont(nThCount);
}
//然后點擊事件沒綁定函數(shù)
$(th).toggle(function(){
thi$(this).index();
clickFun(thi);
//全局函數(shù)都很函數(shù),降序
fSort(compare_up);
//重新排序行
setTrIndex(thi);
},function(){
clickFun(tinh);
//全局函數(shù)比較函數(shù)升序
fSort(compare_down);
//重新排序行
setTrIndex(thi);
})
})
主要思路:
只不過JS有SORT的方法,對數(shù)組接受排序,那就按照個方法,我們變會想到數(shù)組了。
1.點標表格標頭的時候,取出再點的是那一列。即列的索引值。是因為下面要并且排序的那是該列。所以我我要知道是點的那一列。
2.對表格的數(shù)據(jù)部分,也就是tbody部分,進行點擊的列的取值,把這些值現(xiàn)金存入到一個數(shù)組當中。
3.將卡內數(shù)據(jù)的數(shù)組,按照SORT方法并且排序。(這里寫了兩種,升,或降,畢竟是直接點擊時要可以切換排序的。上次降,第一次升,第三降,第四升,由前到后參與)
4.將排序好的數(shù)組的值并且遍歷數(shù)組,在遍歷過程過程中,和每一行TR的然后點擊列的那個TD當中的數(shù)據(jù)通過一個比較。如果沒有大小關系,就再插入到tbody的結果去.(反應最快直接插入的,將是在第一行。)
sort默認是以什么排序的?
sort函數(shù)設置成的排序是升序排序,即你從小到大。
1.對簡單數(shù)組排序
簡單理解那就是partitions(begin,end,cmp)
sort函數(shù)中參數(shù)有三個(第三個這個可以省略)
其中begin是排序數(shù)組的起始地址
end是排序數(shù)組的結束地址(后來一位要排序元素的地址)這兩個參數(shù)是地址。
對于降序排序這個可以用sort(a,a10,greater())也這個可以可以自定義cmp函數(shù)
另外相不對應的升序排序用sort(a,a10,less())
2.對string型按字典序排序
3.對結構體排列
相對于結構體排序不過也不是很難,僅僅要我們自己格式化處理cmp函數(shù)