一.排序(正序,逆序)两种思路:
A.正序,逆序分别直接通过算法实现。
B.排出正序后,逆序可以间接通过正序从末尾位输出实现
二.排序
* .公用变量申明:
flag:标识变换,这样点击按钮每次转换正序,逆序
object_arr是数组,里面的元素是对象。
1.字符串排序:
var flag = 0;
function nameOrder(){
var str="";
var names= object_arr.sort();
if(flag == 1){
flag = 0;
for(var i=0;i<names.length;i++){
//数组元素name[i]是一个对象
str += fileHtml(names[i],style);
}
}else{//逆序通过正序的从末尾输出实现
flag = 1;
for(var i=names.length;i>0;i--){
//fileHtml(object,style)一条记录(元素)html
str += fileHtml(names[i-1],style);
}
}
$('#file-div').html("");
$('#file-div').html(str);
}
2.数值排序:
views 是浏览量意思 int类型
function viewsOrder(){
var str="";
var views;
if (flag == 1) {
flag = 0;
views = object_arr.sort(
function (a, b) {
return (b.views - a.views);
}
);
} else {
flag = 1;
views = object_arr.sort(
function (a, b) {
return a.views - b.views;
}
);
}
for(var i=0;i<views.length;i++){
str += fileHtml(views[i],style);
}
$('#file-div').html("");
$('#file-div').html(str);
}
3.日期排序
var str = '2013-08-30'; // 日期字符串
str = str.replace(/-/g,'/'); // 将-替换成/,因为getTime()只支持/分隔的日期字符串
var date = new Date(str); // 构造一个日期型数据,值为传入的字符串
//此时得到的是日期型数据,如果要得到时间戳:
var time = date.getTime();
Eg:
function dateOrder(){
var str="";
var dates;
if(flag == 1){
flag=0;
dates = object_arr.sort(
function(a,b){
return (new Date(a.createdAt.date.replace(/-/g,'/')).getTime()- new Date(b.createdAt.date.replace(/-/g,'/')).getTime());
}
);
}else{
flag=1;
dates = object_arr.sort(
function(a,b){
return (new Date(b.createdAt.date.replace(/-/g,'/')).getTime()- new Date(a.createdAt.date.replace(/-/g,'/')).getTime());
}
);
}
for(var i=0;i<dates.length;i++){
str += fileHtml(dates[i],style);
}
$('#file-div').html("");
$('#file-div').html(str);
}
总结:以上基本实现一个数组以对象为元素的,对对象某些属性的比较然后排正序和逆序。希望对有需要的人有帮助作用。