sagat06
Messages postés166Date d'inscriptionmercredi 27 juin 2007StatutMembreDernière intervention31 mars 2014
-
25 oct. 2007 à 14:22
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 2011
-
26 oct. 2007 à 13:58
Bonjour à tous,
je suis toujours sur un projet qui me fait perdre la boule (à chaque problème résolu, un nouveau apparait !!).
Bref, cette fois-ci, j'aimerais savoir s'il existerait une fonction permettant d'effacer n'importe quel élément d'un tableau Array (quel que soit son indice), et d'avancer les numéros d'indice des éléments suivants en conséquent, donc de diminuer la taille du tableau.
En cherchant vite fait sur le web, j'ai bien trouvé des fonctions permettant d'effacer le premier élément, le dernier, ou de remplacer n'importe quels éléments par d'autres. Mais pas ce que je voulais.
La fonction delete tab[n°indice] a failli me plaire mais elle rend indéfini l'element d'indice i et ne change pas la taille du tableau.
Sur ce, si quelqu'un pouvait m'aider, je lui en serai très reconnaissant.
Merci d'avance.
Signé Sagat
A voir également:
Supprimer un element d'un tableau js
Javascript supprimer element tableau - Meilleures réponses
Supprimer un élément d'un tableau javascript - Meilleures réponses
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 25 oct. 2007 à 15:14
exemple ? ( pas testé à fond ! loin de là !!! )
<script type="text/javascript">
function affiche()
{ var tmp="";
for ( var n=0;n<tab.length;n++ )
{ tmp+=" "+tab[n]; }
alert(tab.length+"\r\n"+tmp);
}
var tab=new Array("a","b","c","d","e","f","g","h","i");
affiche();
function efface(chp)
{ if ( Number(chp)>=0 & Number(chp)<tab.length )
{ for ( var n=Number(chp);n<tab.length-1;n++ )
{ tab[n]=tab[n+1]; }
tab.pop();
affiche();
}
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 25 oct. 2007 à 15:22
Bonjour, z'a vous
sinon, prototypage sur Array , on va pas s'en priver du genre :
/**
* Supprime l'élement à l'indice _idx
*
* @param _idx
* Indice de l'enregistrement à supprimer.
*/
Array.prototype.remove = function (_idx){
for ( var i = _idx; i < this.length -1 ; i++){
this[i] = this[i+1];
}
this.pop();
return this;
}
et un exemple :
function check(){
var tt= new Array();
for ( var i = 0; i < 10; i++){
tt.push(i);
}
alert ( tt.toString());
tt= tt.remove(5);
alert ( tt.toString());
tt= tt.remove(5);
alert ( tt.toString());
}
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 25 oct. 2007 à 15:01
Bonjour,
à brule pourpoint, comme ça, je dirais décaler les éléments
( celui "à sucrer +1" remplaçant "celui à sucrer"
et ainsi de suite... )
et finir par array.pop() qui supprime le dernier élément
peut-on faire mieux ? probablement...
<hr /> Cordialement Bul [mon Site] [M'écrire]
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 25 oct. 2007 à 15:45
>je pensais qu'il existait une fonction de base permettant de faire cela.
c'est peut-être ( probablement ? sûrement ? ) le cas !
mais n'étant pas particulièrement pointu en javascript,
il faut attendre l'intervention d'autres personnes,
alors en attendant...
<hr /> Cordialement Bul [mon Site] [M'écrire]
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 25 oct. 2007 à 18:12
ah... je venais pour causer de splice !
trottoir : PetoleTeam fut le plus véloce, et c'est nickel
reste à mettre dans Array.prototype, et là : le top ;o)
<hr /> Cordialement Bul [mon Site] [M'écrire]
sagat06
Messages postés166Date d'inscriptionmercredi 27 juin 2007StatutMembreDernière intervention31 mars 20141 25 oct. 2007 à 23:13
Bonjour, désolé de répondre si tard, donc en fait bonsoir ;)
=> Zobibol, je te remercie, tu m'apprends un nouveau truc, très interessant d'ailleurs. A étudier.
=> Bultez, comme toujours tu m'es d'un grand secours. Merci.
=>PetroleTeam, tu m'as fait ouvrir les yeux.
Je m'explique: sur le site selfhtml, j'avais regardé les méthodes pouvant être appliquées au tableau array; j'avais remarqué cette méthode mais leur explication (pas très clairs) m'avaient fait pensé qu'elle remplaçait les elts effacés par des eléments vides. Ce qui ne m'interessait pas, mais n'est en fait pas le cas. Donc merci.
Petit à petit, j'avance, j'avance...
Merci à tous.
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 26 oct. 2007 à 11:54
Comme je l'ai écrit plus tôt :
Array.prototype.MethodeName = function (_param){
}
Si toute fois tu mets en place des prototypes sur Array, te serait-il possible de les partager ( soit dans un source ) soit dans un tutoriel, ça pourrait être relativement interressant.
Le seul soucis que j'ai rencontré c'est avec Internet Explorer qui ne veut pas qu'on prototype sur Document ( c'est bien domage car cela pourrait être fort utile ! ) donc si quelqu'un a un contournement, je suis preneur !
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 26 oct. 2007 à 12:41
ici, à mon humble avis, mettre en 'prototype' n'apporterait rien
( on peut dire que splice l'est dèjà ! ) , à part renommer splice
et/ou eviter 1 paramètre ???
il y avait
;o) en fin de suggestion.
>>sur selfHTML, j'avais regardé les méthodes pouvant être appliquées au tableau array;
>>j'avais remarqué cette méthode mais leur explication (pas très claire)..
sagat06++
>>Internet Explorer qui ne veut pas qu'on prototype sur Document
>>c'est bien dommage car cela pourrait être fort utile !
zobibol++
tu peux nous montrer un truc qui ne fonctionne pas ?
dans une autre question peut-être ?
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 26 oct. 2007 à 13:54
Bonjour à tous,
un exemple de prototype
if( !Array.remove){ // on ne sait jamais cela peut venir Array.prototype.remove =
function( num_, nb_){
//-- Gestion de quelques erreurs
if( typeof( num_) ! ='number') //genere une erreur
throw new Error("Array.remove() : Le premier paramètre doit être un nombre !");
//-- index trop grand if( num_ > this.length)
return([]); //retourne un tableau vide //-- par defaut un element a supprimer nb_ = nb_ ? nb_ : 1;
//-- Applique la methode splice
var T_Kill = this.splice( num_, nb_);
//-- retourne le tableau killer comme splice return ( T_Kill);
}
}