Files
dzc f087d6ba57 feat: 合入航空账号、子账号及会员管理更新
Import the supplied management frontend, including request encryption, withdrawal updates, and vendored dependencies.
Use incoming versions for overlapping source files and retain existing environment configuration absent from the supplied directory.
2026-10-29 16:52:46 +08:00

106 lines
4.3 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<script src="naturalSort.js" type="text/javascript"></script>
<script>
/* Mike Grier's fixes on v0.2 http://mgrier.com/code/natsort.optimized.txt */
function naturalSort2(a,b){
// setup temp-scope variables for comparison evauluation
var x = a.toString().toLowerCase() || '',
re=/(-?[0-9.]+)/g,
y = b.toString().toLowerCase() || '',
nC = String.fromCharCode(0),
xN = x.replace( re, nC + '$1' + nC ).split(nC),
yN = y.replace( re, nC + '$1' + nC ).split(nC),
xD = (new Date(x)).getTime(),yD;
if(xD) yD = (new Date(y)).getTime(); //no point in getting yD if xD is not a date
// natural sorting of dates
if(yD){ // we already checked if(xD), so if(yD), it's a date, too
if( xD < yD ) return -1;
else if( xD > yD ) return 1;
}
// natural sorting through split numeric strings and default strings
var cLoc, numS=Math.max(xN.length,yN.length);
for(cLoc=0; cLoc<numS; cLoc++){
// instead of performing these next 6 operations in the if
// and the same 6 operations in the else if, just do them once
// so we can reuse results instead of computing twice
xNcL = xN[cLoc]; // only look up values
yNcL = yN[cLoc]; // in arrays once
FxNcL = parseFloat(xNcL);
FyNcL = parseFloat(yNcL);
oFxNcL = FxNcL || xNcL;
oFyNcL = FyNcL || yNcL;
if(oFxNcL < oFyNcL)return -1;
else if(oFxNcL > oFyNcL)return 1;
}
return 0;
}
/*
* Natural Sort algorithm for Javascript
* Version 0.3
* Author: Jim Palmer (based on chunking idea from Dave Koelle)
* optimizations and safari fix by Mike Grier (mgrier.com)
* Released under MIT license.
*/
function naturalSort3(a, b){
// setup temp-scope variables for comparison evauluation
var re = /(-?[0-9\.]+)/g,
x = a.toString().toLowerCase() || '',
y = b.toString().toLowerCase() || '',
nC = String.fromCharCode(0),
xN = x.replace( re, nC + '$1' + nC ).split(nC),
yN = y.replace( re, nC + '$1' + nC ).split(nC),
xD = (new Date(x)).getTime(),
yD = xD ? (new Date(y)).getTime() : null;
// natural sorting of dates
if ( yD )
if ( xD < yD ) return -1;
else if ( xD > yD ) return 1;
// natural sorting through split numeric strings and default strings
for( var cLoc = 0, numS = Math.max(xN.length, yN.length); cLoc < numS; cLoc++ ) {
oFxNcL = parseFloat(xN[cLoc]) || xN[cLoc];
oFyNcL = parseFloat(yN[cLoc]) || yN[cLoc];
if (oFxNcL < oFyNcL) return -1;
else if (oFxNcL > oFyNcL) return 1;
}
return 0;
}
var a = [], b = [], c = [];
for ( var i = 0; i < 1000; i++ ) {
a.push(String.fromCharCode( Math.floor(Math.random() * (90-66)) + 65, Math.floor(Math.random() * (90-66)) + 65, Math.floor(Math.random() * (90-66)) + 65 ));
b.push(String.fromCharCode( Math.floor(Math.random() * (90-66)) + 65, Math.floor(Math.random() * (90-66)) + 65, Math.floor(Math.random() * (90-66)) + 65 ));
c.push(String.fromCharCode( Math.floor(Math.random() * (90-66)) + 65, Math.floor(Math.random() * (90-66)) + 65, Math.floor(Math.random() * (90-66)) + 65 ));
}
for ( i = 0; i < 1000; i++ ) {
a.push(Math.floor(Math.random() * 9).toString() + Math.floor(Math.random() * 9).toString() + Math.floor(Math.random() * 9).toString() );
b.push(Math.floor(Math.random() * 9).toString() + Math.floor(Math.random() * 9).toString() + Math.floor(Math.random() * 9).toString() );
c.push(Math.floor(Math.random() * 9).toString() + Math.floor(Math.random() * 9).toString() + Math.floor(Math.random() * 9).toString() );
}
for ( i = 0; i < 1000; i++ ) {
a.push( (Math.floor(Math.random() * 12) + 1).toString() + '/' + (Math.floor(Math.random() * 28) + 1).toString() + '/' + ( 2009 - Math.floor(Math.random() * 2)) );
b.push( (Math.floor(Math.random() * 12) + 1).toString() + '/' + (Math.floor(Math.random() * 28) + 1).toString() + '/' + ( 2009 - Math.floor(Math.random() * 2)) );
c.push( (Math.floor(Math.random() * 12) + 1).toString() + '/' + (Math.floor(Math.random() * 28) + 1).toString() + '/' + ( 2009 - Math.floor(Math.random() * 2)) );
}
var d = new Date();
document.write(a.sort(naturalSort)[0] + ' <BR>[' + ((new Date()).getTime() - d.getTime()) + 'ms]<BR><BR>');
//d = new Date();
//document.write(b.sort(naturalSort2)[0] + ' <BR>[' + ((new Date()).getTime() - d.getTime()) + 'ms]<BR><BR>');
//d = new Date();
//document.write(c.sort(naturalSort3)[0] + ' <BR>[' + ((new Date()).getTime() - d.getTime()) + 'ms]');
</script>
<style>*{font-family:tahoma;font-size:9px;}</style>
</head>
<body></body>
</html>