isin ? fcontion perso ? de lib ?
sinon pour le test sur les tagNames un petit toUpperCase juste au cas ou certains navigateurs retournent le tagName en minuscules ...
isin ? fcontion perso ? de lib ?
sinon pour le test sur les tagNames un petit toUpperCase juste au cas ou certains navigateurs retournent le tagName en minuscules ...
Merci, SpaceFrog, de ta contribution !
Cest cela.isin ? fcontion perso ?
Cest cela, de la fameuse sacapuss2lib. Voici ladite fonction :de lib ?
Vos commentaires sont bienvenus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Object.prototype.isin=function() { var butee,i,liste=arguments.length-1?arguments:arguments[0] if(butee=liste.length) for(i=0; i<butee; i++) { if(sontidentiques(liste[i],this)) return true } else for(i in liste) { if(sontidentiques(liste[i],this)) return true } return false }
Merci de cette suggestion !sinon pour le test sur les tagNames un petit toUpperCase juste au cas ou certains navigateurs retournent le tagName en minuscules ...
A+
salut,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Object.prototype.isin=function() { var butee,i,liste=arguments.length-1?arguments:arguments[0] if(butee=liste.length) for(i=0; i<butee; i++) { if(sontidentiques(liste[i],this)) return true } else for(i in liste) { if(sontidentiques(liste[i],this)) return true } return false }
Si j'ai compris, isin s'applique sur un objet, et le but est de trouver si cet objet est dans un tableau passé en paramètre (ou une valeur).
Il n'y a qu'à produire le contraire à l'aide d'indexOf :
Donc en fait c'est un poil tricky. indexOf compare les valeurs mais également les types. Du moins chez mozilla.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Object.prototype.isin=function() { //retrieves arguments in array form var args=[].slice.apply(arguments); var that=this; if(that instanceof String){ that+='';//implicit conversion toString();//to get a primitive datatype string } return args.indexOf(that)!=-1; } var a ='toto'; console.log(a.isin('lol', 'toto2'));//false console.log(a.isin('lol', 'toto'));//true var b={} var c=b; console.log(b.isin(c));//true console.log(b.isin({}));//false
Les instances de indexOf sont de type primitif string. this est de type String (un wrapper de string). Donc il est nécessaire de caster String en string.
C'est également valable pour Number, Boolean,...
Attention cependant aux vieilles versions d'IE pour lesquelles on ne peut pas faire d'indexOf sur les tableaux.
Mais on peut "se couvrir" en redéfinissant la méthode le cas échéant, avec cette version issue de Prototype par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 if (!Array.prototype.indexOf) Array.prototype.indexOf = function(wanted, i) { i || (i = 0); var long = this.length; if (i < 0) i = long + i; for (; i < long; i++) if (this[i] === wanted) return i; return -1; }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager