Nee, geen vraag, maar gewoon een mooi stukje code dat ik wel wil delen.
Stel, je hebt een 2-dimensionale array die je op een willekeurig element wilt sorteren:
Voor zover ik weet kan je hier geen gewone sort() op loslaten, dus heb ik de volgende code bedacht (bubble-sort):
Nu kan je de array sorteren mbv array.sorta([element], [volgorde]).
Wil je op timestamp aflopend sorteren doe je dus:
Wil je op usernaam oplopend sorteren doe je:
Hier nog een stukje code om de gesorteerde array naar scherm te schrijven:
Als iemand nog makkelijkere/snellere/betere methodes weet, dan hou ik me aanbevolen!
Stel, je hebt een 2-dimensionale array die je op een willekeurig element wilt sorteren:
code:
1
2
3
4
5
6
7
8
| var topic = new Array(); topic[0] = new Array(20020604101832, 'gnoe'); topic[1] = new Array(20020604171547, 'crisp'); topic[2] = new Array(20020604132617, 'pelle'); topic[3] = new Array(20020604225456, 'clay'); topic[4] = new Array(20020605030238, 'cutter'); topic[5] = new Array(20020604011142, 'fietstas'); topic[6] = new Array(20020605051628, 'woei'); |
Voor zover ik weet kan je hier geen gewone sort() op loslaten, dus heb ik de volgende code bedacht (bubble-sort):
code:
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
| function _copy() {
var temparray = new Array();
for (var i = 0; i < this.length; i++) {
temparray[i] = this[i];
}
return temparray;
}
Array.prototype.copy = _copy;
function _sorta(el, ad) {
var i;
var s = 0;
var l = 0;
var r = this.length - 1;
var d = 1;
var n = (ad == 'a')? 1:-1;
while (l*d < r*d) {
for (i = l; d*i < d*r; i+=d) {
if ((this[i][el] > this[i+d][el] && (d*n==1))
|| (this[i][el] < this[i+d][el] && (d*n==-1))) {
temparray = this[i].copy();
this[i] = this[i+d].copy();
this[i+d] = temparray.copy();
s=i;
}
}
r = l;
l = s;
d *= -1;
}
}
Array.prototype.sorta = _sorta; |
Nu kan je de array sorteren mbv array.sorta([element], [volgorde]).
Wil je op timestamp aflopend sorteren doe je dus:
code:
1
| topic.sorta(0, 'd'); |
Wil je op usernaam oplopend sorteren doe je:
code:
1
| topic.sorta(1, 'a'); |
Hier nog een stukje code om de gesorteerde array naar scherm te schrijven:
code:
1
2
3
4
5
6
7
8
9
10
11
| for (i = 0; i < topic.length; i++) {
for (n = 0; n < topic[i].length; n++) {
document.write(topic[i][n] + ', ');
}
document.write('<br>');
} |
Als iemand nog makkelijkere/snellere/betere methodes weet, dan hou ik me aanbevolen!
Intentionally left blank