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 ...
Ma page Developpez - Mon Blog Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag![]()
Venez sur le Chat de Développez !
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; }
Partager