Omdat volgens mijn research javascript geen in_array functie heeft voor arrays, heb ik zelf maar eentje gemaakt, tevens ook een in_array_keys functie:
Tot zover gaat alles goed, maar nu, ik heb een array 'buttons', als volgt gedefinieerd:
Als ik nu door de elementen van deze array ga lopen, zie ik tot mijn verbazing dat er ook een key in_array is aangemaakt:
Geeft mij twee alerts, eentje met de voorspelbare 'bold', en eentje, met in_array als tekst. Wat ik vooral vreemd vind is dat wel in_array als key wordt gedefinieerd, maar niet in_array_keys, terwijl beide werken. Het allerbelangrijkste is echter hoe ik dit gedrag voorkom.
JavaScript:
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
| // add a find function to arrays similar to php's in_array function Array.prototype.in_array = function (needle) { var i; for (i = 0; i < this.length; i++) { if (this[i] == needle) { return true; } } return false; } // same as in_array, but works on keys instead Array.prototype.in_array_keys = function (key) { var i; for (i in this) { if (i == key) { return true; } } return false; } |
Tot zover gaat alles goed, maar nu, ik heb een array 'buttons', als volgt gedefinieerd:
JavaScript:
1
2
| var buttons = new Array(); buttons['bold'] = 'b'; |
Als ik nu door de elementen van deze array ga lopen, zie ik tot mijn verbazing dat er ook een key in_array is aangemaakt:
JavaScript:
1
2
3
4
| for (i in buttons) { alert(i); } |
Geeft mij twee alerts, eentje met de voorspelbare 'bold', en eentje, met in_array als tekst. Wat ik vooral vreemd vind is dat wel in_array als key wordt gedefinieerd, maar niet in_array_keys, terwijl beide werken. Het allerbelangrijkste is echter hoe ik dit gedrag voorkom.
Ik ontken het bestaan van IE.