次のような単一の文字列の値に基づいて、データテーブルを使用してテーブルを並べ替える必要があります。
Number 23624 of 2010
Number 14502 of 1942
Number 10530 of 1942
Number 56020 of 2010
Number 06205 of 1997
この単一の文字列を分割して、XXXXX と YYYY の 2 つの数値を取得しました。
私がする必要があるのは、YYYYが同じ場合はXXXXXでソートし、最新のYYYYを一番上にすることです。例えば:
Number 23624 of 2010
Number 56020 of 2010
Number 06205 of 1997
Number 10530 of 1942
Number 14502 of 1942
誰でもアドバイスできますか?DataTables でoSort関数を使用しています。
編集:要求に応じて、ここにコードがあります:
jQuery.fn.dataTableExt.oSort['its-no-asc'] = function(a,b) {
if(!j(a).is("a")) {
x = a;
} else {
x = j(a).text();
}
if(!j(b).is("a")) {
y = b;
} else {
y = j(b).text();
}
x_array = x.split(" ");
y_array = y.split(" ");
x_numbers_array = [];
y_numbers_array = [];
j.each(x_array, function(key, value) {
orig_value = value;
value = value.replace("Number", "");
value = parseInt(value);
if(j.isNumeric(value)) {
x_numbers_array.push(value);
}
});
j.each(y_array, function(key, value) {
orig_value = value;
value = value.replace("Number", "");
value = parseInt(value);
if(j.isNumeric(value)) {
y_numbers_array.push(value);
}
});
y_no = y_numbers_array[0];
y_year = y_numbers_array[1];
x_no = x_numbers_array[0];
x_year = x_numbers_array[1];
//console.log(x_year);
if(x_year == y_year) {
if(x_year == y_year && x_no < y_no) {
return -1;
} else if (x_year == y_year && x_no > y_no) {
return 1;
} else if (x_year == y_year) {
return 0;
}
} else if(x_year < y_year) {
if(x_year < y_year && x_no < y_no) {
return -1;
} else if (x_year < y_year && x_no > y_no) {
return 1;
} else if (x_year < y_year) {
return 0;
}
} else if(x_year > y_year) {
if(x_year > y_year && x_no < y_no) {
return -1;
} else if (x_year > y_year && x_no > y_no) {
return 1;
} else {
return 0;
}
}
};
jQuery.fn.dataTableExt.oSort['its-no-desc'] = function(a,b) {
//
};
j(document).ready(function() {
j('.treaty-table').dataTable({
"sPaginationType": "full_numbers",
"aoColumns": [
{ "sType": "its-no" },
null,
null,
null,
null
]
});
});