1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
| /**
| * @author: Brian Huisman
| * @webSite: http://www.greywyvern.com
| * @version: v1.0.0
| * JS function to allow natural sorting on bootstrap-table columns
| * just add data-sorter="alphanum" to any th
| *
| * @update Dennis Hernández <http://djhvscf.github.io/Blog>
| */
|
| function alphanum(a, b) {
| function chunkify(t) {
| var tz = [],
| x = 0,
| y = -1,
| n = 0,
| i,
| j;
|
| while (i = (j = t.charAt(x++)).charCodeAt(0)) {
| var m = (i === 46 || (i >= 48 && i <= 57));
| if (m !== n) {
| tz[++y] = "";
| n = m;
| }
| tz[y] += j;
| }
| return tz;
| }
|
| var aa = chunkify(a);
| var bb = chunkify(b);
|
| for (x = 0; aa[x] && bb[x]; x++) {
| if (aa[x] !== bb[x]) {
| var c = Number(aa[x]),
| d = Number(bb[x]);
|
| if (c == aa[x] && d == bb[x]) {
| return c - d;
| } else {
| return (aa[x] > bb[x]) ? 1 : -1;
| }
| }
| }
| return aa.length - bb.length;
| }
|
|