OVH Cloud OVH Cloud

ajouter une méthode à Array()

4 réponses
Avatar
pere.noel
j'aimerais ajouter une méthode à Array(), j'ai donc essayé :

Array.prototype.deleteAt=function(m) {return m;};

mais JavaScript Shell (<squarefree.com/shell/shell.html>)

me donne :

TypeError on line 1:Array.prototype has no properties

on ne peut donc étendre l'objet Array en js ???

si ce n'est vraiment pas possible j'imagine que je peux créer un nouvel
objet TArray par ex qui hérite de Array et auquel je pourrai ajouter
cette méthode ???

--
Père Noël

4 réponses

Avatar
pere.noel
Père Noël wrote:


si ce n'est vraiment pas possible j'imagine que je peux créer un nouvel
objet TArray par ex qui hérite de Array et auquel je pourrai ajouter
cette méthode ???



function TArray(a){
this.a=a;
this.deleteAt=function(i){
return new Array().concat(this.a.slice(0,i),this.a.slice(i+1));
};
};

bon, ça roule, "en attendant" mais c'est pas très "jojo" :

- j'aimerais ne pas avoir à utiliser le "subterfuge" this.a=a, si je me
souviens bien il y a un mouen de faire en sorte que this=a; mais je n'ai
pas retrouvé ce truc...

- j'ai essayé (sur ff) TArray.prototype et là aussi j'ai droit à un msg
d'erreur me disait que TArray n'a pas la ppté prototype... ???


aussi j'ai essayé dutiliser splice() pour supprimer un élément du genre
:

t=new Array("un","deux","trois");
alert(t.splice(1,1));

ça me retourne t au complet... normal ???

ou splice n'est fait que pour insérrer/supprimer MAIS à la condition où
on insère qqc ?

bien sûr j'ai essayé :

t.splice(1,1,null) --> rien de mieux...
--
Père Noël

Avatar
Machaon
""Père Noël"" a écrit dans le message de
news: 1hqmo15.1czu2quwbv157N%
j'aimerais ajouter une méthode à Array(), j'ai donc essayé :

Array.prototype.deleteAt=function(m) {return m;};

mais JavaScript Shell (<squarefree.com/shell/shell.html>)

me donne :

TypeError on line 1:Array.prototype has no properties

on ne peut donc étendre l'objet Array en js ???

si ce n'est vraiment pas possible j'imagine que je peux créer un nouvel
objet TArray par ex qui hérite de Array et auquel je pourrai ajouter
cette méthode ???



Si ça peut t'aider, cette fonction marche très bien chez moi :


/*-------------------------------------------------------------------------------
* Même fonctionnement que "in_array" en php
* Renvoi vrai si la valeur est dans le tableau, false si non
*------------------------------------------------------------------------------- */Array.prototype.contient = function(valeur) { for (var i in this) { if (this[i]==valeur) return true; } return false;}Machaon

Avatar
Machaon
"Machaon" a écrit dans le message de news:
4588e507$0$11739$
""Père Noël"" a écrit dans le message de
news: 1hqmo15.1czu2quwbv157N%
j'aimerais ajouter une méthode à Array(), j'ai donc essayé :

Array.prototype.deleteAt=function(m) {return m;};

mais JavaScript Shell (<squarefree.com/shell/shell.html>)

me donne :

TypeError on line 1:Array.prototype has no properties

on ne peut donc étendre l'objet Array en js ???

si ce n'est vraiment pas possible j'imagine que je peux créer un nouvel
objet TArray par ex qui hérite de Array et auquel je pourrai ajouter
cette méthode ???




/*------------------------------------------------------------------------------- * Même fonctionnement que "in_array" en php * Renvoi vrai si la valeur est dans le tableau, false si non *------------------------------------------------------------------------------- */Array.prototype.contient = function(valeur) {for (var i in this) { if (this[i]==valeur) return true; } return false;}Complément d'info, je l'utilise comme ça : var listtyp = new Array();.... if (!listtyp.contient(document.forms[0].elements[k].type))..."Tableau.fonction" et non "Tableau.prototype.fonction" :-)J'espère que ça t'aidera !Machaon


Avatar
pere.noel
Machaon wrote:

/*--------------------*
Même fonctionnement que "in_array" en php * Renvoi vrai si la valeur est

dans le tableau, false si non
*-----------------------------------------------------------------------
-------- */Array.prototype.contient = function(valeur) {for (var i in
this) { if (this[i]==valeur) return true; } return false;}Complément
d'info, je l'utilise comme ça : var listtyp = new Array();.... if
(!listtyp.contient(document.forms[0].elements[k].type))..."Tableau.fonct
ion" et non "Tableau.prototype.fonction" :-)J'espère que ça t'aidera
!Machaon

OK, merci beaucoup, ta fonction "contient" marche impec !!!

j'ai du faire une typo dans la mienne )))
--
Père Noël