Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
YD
Je galere avec les splice et autre manips mais je suis persuadé qu'il y a plus simple. Comment decaler un element dans un tableau :
{0, 1, 2, 3, 4} -> {0, 1, 2, 4, 3}
Une fonction comme celle-ci doit faire l'affaire (abondamment commentée !) :
function decale(a,i,j){ //décale l'élément index i à l'index j //résultat: nouvel Array, Array original non modifié // on préserve le ième élément var aux=a[i]; // b Array sans le iéme de a var b=[].concat(a.slice(0,i),a.slice(i+1)); // retour Array avec ième élément décalé à position j return [].concat(b.slice(0,j),aux,b.slice(j)); }
// à utiliser ainsi aÞcale([0,1,2,3,4],4,3) // -> a=[0,1,2,4,3]
Je n'ai pas testé tous les cas de figure (Array d'objets divers), mais ça devrait marcher...
-- Y.D.
Je galere avec les splice et autre manips mais je suis persuadé qu'il y a
plus simple. Comment decaler un element dans un tableau :
{0, 1, 2, 3, 4} -> {0, 1, 2, 4, 3}
Une fonction comme celle-ci doit faire l'affaire (abondamment
commentée !) :
function decale(a,i,j){
//décale l'élément index i à l'index j
//résultat: nouvel Array, Array original non modifié
// on préserve le ième élément
var aux=a[i];
// b Array sans le iéme de a
var b=[].concat(a.slice(0,i),a.slice(i+1));
// retour Array avec ième élément décalé à position j
return [].concat(b.slice(0,j),aux,b.slice(j));
}
// à utiliser ainsi
aÞcale([0,1,2,3,4],4,3) // -> a=[0,1,2,4,3]
Je n'ai pas testé tous les cas de figure (Array d'objets divers),
mais ça devrait marcher...
Je galere avec les splice et autre manips mais je suis persuadé qu'il y a plus simple. Comment decaler un element dans un tableau :
{0, 1, 2, 3, 4} -> {0, 1, 2, 4, 3}
Une fonction comme celle-ci doit faire l'affaire (abondamment commentée !) :
function decale(a,i,j){ //décale l'élément index i à l'index j //résultat: nouvel Array, Array original non modifié // on préserve le ième élément var aux=a[i]; // b Array sans le iéme de a var b=[].concat(a.slice(0,i),a.slice(i+1)); // retour Array avec ième élément décalé à position j return [].concat(b.slice(0,j),aux,b.slice(j)); }
// à utiliser ainsi aÞcale([0,1,2,3,4],4,3) // -> a=[0,1,2,4,3]
Je n'ai pas testé tous les cas de figure (Array d'objets divers), mais ça devrait marcher...
-- Y.D.
ASM
Je n'ai pas testé tous les cas de figure (Array d'objets divers), mais ça devrait marcher...
Et il n'y a vraiment pas un truc simple ? pour insérer un nouvel élément là qque part au milieu de l'array ? au lieu de découper des bouts de tronçons et les recoller. du genre : monArray.insere(index,element);
J'ai vu qu'il y avait des fonctions natives pour ajouter ou retrancher en début et fin de tableau, et n'ai rien vu pour ajouter et/ou supprimer au milieu
-- Stephane Moriaux et son [moins] vieux Mac
Je n'ai pas testé tous les cas de figure (Array d'objets divers), mais
ça devrait marcher...
Et il n'y a vraiment pas un truc simple ?
pour insérer un nouvel élément là qque part au milieu de l'array ?
au lieu de découper des bouts de tronçons et les recoller.
du genre : monArray.insere(index,element);
J'ai vu qu'il y avait des fonctions natives pour ajouter ou retrancher
en début et fin de tableau, et n'ai rien vu pour ajouter et/ou supprimer
au milieu
Je n'ai pas testé tous les cas de figure (Array d'objets divers), mais ça devrait marcher...
Et il n'y a vraiment pas un truc simple ? pour insérer un nouvel élément là qque part au milieu de l'array ? au lieu de découper des bouts de tronçons et les recoller. du genre : monArray.insere(index,element);
J'ai vu qu'il y avait des fonctions natives pour ajouter ou retrancher en début et fin de tableau, et n'ai rien vu pour ajouter et/ou supprimer au milieu
-- Stephane Moriaux et son [moins] vieux Mac
Thierry
YD écrivait news:43f38b3d$0$18311$:
Je galere avec les splice et autre manips mais je suis persuadé qu'il y a plus simple. Comment decaler un element dans un tableau :
{0, 1, 2, 3, 4} -> {0, 1, 2, 4, 3}
Une fonction comme celle-ci doit faire l'affaire (abondamment commentée !) :
Merci bien, ca fonctionne. Je pensais qu'il aurait plus simple.
Je galere avec les splice et autre manips mais je suis persuadé qu'il y a plus simple. Comment decaler un element dans un tableau :
{0, 1, 2, 3, 4} -> {0, 1, 2, 4, 3}
Une fonction comme celle-ci doit faire l'affaire (abondamment commentée !) :
Merci bien, ca fonctionne. Je pensais qu'il aurait plus simple.
YD
YD écrivait news:43f38b3d$0$18311$:
Je galere avec les splice et autre manips mais je suis persuadé qu'il y a plus simple. Comment decaler un element dans un tableau :
{0, 1, 2, 3, 4} -> {0, 1, 2, 4, 3} Une fonction comme celle-ci doit faire l'affaire (abondamment
commentée !) :
Merci bien, ca fonctionne. Je pensais qu'il aurait plus simple.
La seule méthode de l'objet Arrray qui permette d'insérer des éléments au milieu de l'Array est la méthode splice.
Par exemple a.splice(i,0,elt1,elt2,elt3) ne supprime aucun élément (à cause du 0) mais insère les 3 éléments dans l'Array. (Ça répond aussi au message de Stéphane ;-) ).
Son inconvénient est qu'elle opère directement sur l'objet Array qui l'appelle et le modifie (c'est pour cela que je ne l'ai pas utilisée dans mon article précédent et ai donc dû tronçonner...).
Voici un autre exemple qui cette fois opère sur l'Array et le modifie :
Array.prototype.move=function (i,j){ this.insert(j,this.splice(i,1)) return this } Array.prototype.insert=function (i){ var args=[]; i--; for(var k=1;k<arguments.length;k++) this.splice(i+k,0,arguments[k]); return this; }
Ces méthodes s'utilisent ainsi :
a=[0,1,2,3,4,5,6]; a.move(3,5); //le 4e élt est décalé en 6e alert(a); a.insert(2,'a','b','c'); //on insère en 3e (et suivants) les éléments indiqués alert(a);
La méthode insert peut paraître complexe, c'est dû à ce qu'elle est écrite pour fonctionner, comme la méthode splice, avec un nombre variable d'éléments à insérer.
Je galere avec les splice et autre manips mais je suis persuadé qu'il
y a plus simple. Comment decaler un element dans un tableau :
{0, 1, 2, 3, 4} -> {0, 1, 2, 4, 3}
Une fonction comme celle-ci doit faire l'affaire (abondamment
commentée !) :
Merci bien, ca fonctionne. Je pensais qu'il aurait plus simple.
La seule méthode de l'objet Arrray qui permette d'insérer des
éléments au milieu de l'Array est la méthode splice.
Par exemple a.splice(i,0,elt1,elt2,elt3) ne supprime aucun élément
(à cause du 0) mais insère les 3 éléments dans l'Array. (Ça répond
aussi au message de Stéphane ;-) ).
Son inconvénient est qu'elle opère directement sur l'objet Array qui
l'appelle et le modifie (c'est pour cela que je ne l'ai pas utilisée
dans mon article précédent et ai donc dû tronçonner...).
Voici un autre exemple qui cette fois opère sur l'Array et le
modifie :
Array.prototype.move=function (i,j){
this.insert(j,this.splice(i,1))
return this
}
Array.prototype.insert=function (i){
var args=[];
i--;
for(var k=1;k<arguments.length;k++)
this.splice(i+k,0,arguments[k]);
return this;
}
Ces méthodes s'utilisent ainsi :
a=[0,1,2,3,4,5,6];
a.move(3,5); //le 4e élt est décalé en 6e
alert(a);
a.insert(2,'a','b','c');
//on insère en 3e (et suivants) les éléments indiqués
alert(a);
La méthode insert peut paraître complexe, c'est dû à ce qu'elle est
écrite pour fonctionner, comme la méthode splice, avec un nombre
variable d'éléments à insérer.
Je galere avec les splice et autre manips mais je suis persuadé qu'il y a plus simple. Comment decaler un element dans un tableau :
{0, 1, 2, 3, 4} -> {0, 1, 2, 4, 3} Une fonction comme celle-ci doit faire l'affaire (abondamment
commentée !) :
Merci bien, ca fonctionne. Je pensais qu'il aurait plus simple.
La seule méthode de l'objet Arrray qui permette d'insérer des éléments au milieu de l'Array est la méthode splice.
Par exemple a.splice(i,0,elt1,elt2,elt3) ne supprime aucun élément (à cause du 0) mais insère les 3 éléments dans l'Array. (Ça répond aussi au message de Stéphane ;-) ).
Son inconvénient est qu'elle opère directement sur l'objet Array qui l'appelle et le modifie (c'est pour cela que je ne l'ai pas utilisée dans mon article précédent et ai donc dû tronçonner...).
Voici un autre exemple qui cette fois opère sur l'Array et le modifie :
Array.prototype.move=function (i,j){ this.insert(j,this.splice(i,1)) return this } Array.prototype.insert=function (i){ var args=[]; i--; for(var k=1;k<arguments.length;k++) this.splice(i+k,0,arguments[k]); return this; }
Ces méthodes s'utilisent ainsi :
a=[0,1,2,3,4,5,6]; a.move(3,5); //le 4e élt est décalé en 6e alert(a); a.insert(2,'a','b','c'); //on insère en 3e (et suivants) les éléments indiqués alert(a);
La méthode insert peut paraître complexe, c'est dû à ce qu'elle est écrite pour fonctionner, comme la méthode splice, avec un nombre variable d'éléments à insérer.
-- Y.D.
ASM
Par exemple a.splice(i,0,elt1,elt2,elt3) ne supprime aucun élément (à cause du 0) mais insère les 3 éléments dans l'Array. (Ça répond aussi au message de Stéphane ;-) ).
j'étais allé voir ici : http://fr.selfhtml.org/javascript/objets/array.htm#splice et il ne m'y causent pas de l'astuce du 0 (enfin ... je n'ai pas vu ...)
Pour le reste, c'est archivé et on essaiera d'y comprendre :-)
-- Stephane Moriaux et son [moins] vieux Mac
Par exemple a.splice(i,0,elt1,elt2,elt3) ne supprime aucun élément
(à cause du 0) mais insère les 3 éléments dans l'Array. (Ça répond
aussi au message de Stéphane ;-) ).
j'étais allé voir ici :
http://fr.selfhtml.org/javascript/objets/array.htm#splice
et il ne m'y causent pas de l'astuce du 0
(enfin ... je n'ai pas vu ...)
Pour le reste, c'est archivé et on essaiera d'y comprendre :-)
Par exemple a.splice(i,0,elt1,elt2,elt3) ne supprime aucun élément (à cause du 0) mais insère les 3 éléments dans l'Array. (Ça répond aussi au message de Stéphane ;-) ).
j'étais allé voir ici : http://fr.selfhtml.org/javascript/objets/array.htm#splice et il ne m'y causent pas de l'astuce du 0 (enfin ... je n'ai pas vu ...)
Pour le reste, c'est archivé et on essaiera d'y comprendre :-)
-- Stephane Moriaux et son [moins] vieux Mac
Olivier Miakinen
Par exemple a.splice(i,0,elt1,elt2,elt3) ne supprime aucun élément (à cause du 0) mais insère les 3 éléments dans l'Array.
j'étais allé voir ici : http://fr.selfhtml.org/javascript/objets/array.htm#splice et il ne m'y causent pas de l'astuce du 0 (enfin ... je n'ai pas vu ...)
À vrai dire, ce n'est pas une astuce, et c'est pour ça qu'ils ne précisent pas. S'il n'y avait pas eu une coquille dans la traduction tu n'aurais d'ailleurs pas eu besoin d'explication supplémentaire :
<cit.> 1. index départ = numéro d'index dans le tableau auquel le ou les nouveaux éléments doivent être insérés. 2. nombre = nombre d'éléments à insérer. </cit.>
Remplacer « insérer » par « supprimer » ou « remplacer ». La doc de référence ECMAScript donne le prototype de splice ainsi :
-- Olivier Miakinen Troll du plus sage chez les conviviaux : le nouveau venu, avec son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
Par exemple a.splice(i,0,elt1,elt2,elt3) ne supprime aucun élément
(à cause du 0) mais insère les 3 éléments dans l'Array.
j'étais allé voir ici :
http://fr.selfhtml.org/javascript/objets/array.htm#splice
et il ne m'y causent pas de l'astuce du 0
(enfin ... je n'ai pas vu ...)
À vrai dire, ce n'est pas une astuce, et c'est pour ça qu'ils ne
précisent pas. S'il n'y avait pas eu une coquille dans la traduction
tu n'aurais d'ailleurs pas eu besoin d'explication supplémentaire :
<cit.>
1. index départ = numéro d'index dans le tableau auquel le ou les
nouveaux éléments doivent être insérés.
2. nombre = nombre d'éléments à insérer.
</cit.>
Remplacer « insérer » par « supprimer » ou « remplacer ». La doc de
référence ECMAScript donne le prototype de splice ainsi :
Par exemple a.splice(i,0,elt1,elt2,elt3) ne supprime aucun élément (à cause du 0) mais insère les 3 éléments dans l'Array.
j'étais allé voir ici : http://fr.selfhtml.org/javascript/objets/array.htm#splice et il ne m'y causent pas de l'astuce du 0 (enfin ... je n'ai pas vu ...)
À vrai dire, ce n'est pas une astuce, et c'est pour ça qu'ils ne précisent pas. S'il n'y avait pas eu une coquille dans la traduction tu n'aurais d'ailleurs pas eu besoin d'explication supplémentaire :
<cit.> 1. index départ = numéro d'index dans le tableau auquel le ou les nouveaux éléments doivent être insérés. 2. nombre = nombre d'éléments à insérer. </cit.>
Remplacer « insérer » par « supprimer » ou « remplacer ». La doc de référence ECMAScript donne le prototype de splice ainsi :
-- Olivier Miakinen Troll du plus sage chez les conviviaux : le nouveau venu, avec son clan, s'infiltre dans les groupes de nouvelles. (3 c.)
YD
Par exemple a.splice(i,0,elt1,elt2,elt3) ne supprime aucun élément (à cause du 0) mais insère les 3 éléments dans l'Array. j'étais allé voir ici :
http://fr.selfhtml.org/javascript/objets/array.htm#splice et il ne m'y causent pas de l'astuce du 0 (enfin ... je n'ai pas vu ...)
À vrai dire, ce n'est pas une astuce, et c'est pour ça qu'ils ne précisent pas. S'il n'y avait pas eu une coquille dans la traduction tu n'aurais d'ailleurs pas eu besoin d'explication supplémentaire :
En disant coquille tu es bien aimable. Je ne suis pas sûr que le traducteur (ou l'auteur ?) ait bien compris ce qu'il expliquait... Mais ce n'est effectivement pas une astuce, c'est ce qui est prévu si le 2e argument (deleteCount) est inférieur ou égal à 0.
La doc de référence ECMAScript donne le prototype de splice ainsi :
Ce qui donne en français : start : départ, indice dans l'Array à partir duquel on va travailler deleteCount : nombre d'éléments à supprimer item1, item2... : les éléments à insérer à partir de la position de début (1er argument) ; ces éléments sont optionnels.
Si le nombre d'éléments à supprimer est nul on passe directement à l'insertion.
L'algorithme dans la norme ECMA est un des plus ch... à décoder !
-- Y.D.
Par exemple a.splice(i,0,elt1,elt2,elt3) ne supprime aucun élément
(à cause du 0) mais insère les 3 éléments dans l'Array.
j'étais allé voir ici :
http://fr.selfhtml.org/javascript/objets/array.htm#splice
et il ne m'y causent pas de l'astuce du 0
(enfin ... je n'ai pas vu ...)
À vrai dire, ce n'est pas une astuce, et c'est pour ça qu'ils ne
précisent pas. S'il n'y avait pas eu une coquille dans la traduction
tu n'aurais d'ailleurs pas eu besoin d'explication supplémentaire :
En disant coquille tu es bien aimable. Je ne suis pas sûr que le
traducteur (ou l'auteur ?) ait bien compris ce qu'il expliquait...
Mais ce n'est effectivement pas une astuce, c'est ce qui est prévu
si le 2e argument (deleteCount) est inférieur ou égal à 0.
La doc de
référence ECMAScript donne le prototype de splice ainsi :
Ce qui donne en français :
start : départ, indice dans l'Array à partir duquel on va
travailler
deleteCount : nombre d'éléments à supprimer
item1, item2... : les éléments à insérer à partir de la position
de début (1er argument) ; ces éléments sont optionnels.
Si le nombre d'éléments à supprimer est nul on passe directement à
l'insertion.
L'algorithme dans la norme ECMA est un des plus ch... à décoder !
Par exemple a.splice(i,0,elt1,elt2,elt3) ne supprime aucun élément (à cause du 0) mais insère les 3 éléments dans l'Array. j'étais allé voir ici :
http://fr.selfhtml.org/javascript/objets/array.htm#splice et il ne m'y causent pas de l'astuce du 0 (enfin ... je n'ai pas vu ...)
À vrai dire, ce n'est pas une astuce, et c'est pour ça qu'ils ne précisent pas. S'il n'y avait pas eu une coquille dans la traduction tu n'aurais d'ailleurs pas eu besoin d'explication supplémentaire :
En disant coquille tu es bien aimable. Je ne suis pas sûr que le traducteur (ou l'auteur ?) ait bien compris ce qu'il expliquait... Mais ce n'est effectivement pas une astuce, c'est ce qui est prévu si le 2e argument (deleteCount) est inférieur ou égal à 0.
La doc de référence ECMAScript donne le prototype de splice ainsi :
Ce qui donne en français : start : départ, indice dans l'Array à partir duquel on va travailler deleteCount : nombre d'éléments à supprimer item1, item2... : les éléments à insérer à partir de la position de début (1er argument) ; ces éléments sont optionnels.
Si le nombre d'éléments à supprimer est nul on passe directement à l'insertion.
L'algorithme dans la norme ECMA est un des plus ch... à décoder !
-- Y.D.
Olivier Miakinen
À vrai dire, ce n'est pas une astuce, et c'est pour ça qu'ils ne précisent pas. S'il n'y avait pas eu une coquille dans la traduction tu n'aurais d'ailleurs pas eu besoin d'explication supplémentaire :
En disant coquille tu es bien aimable.
Oui, j'ai le goût de la litote et de l'euphémisme.
Je ne suis pas sûr que le traducteur (ou l'auteur ?) ait bien compris ce qu'il expliquait...
C'est bien ce que je pense aussi.
[ doc de référence ECMAScript, en anglais ]
Ce qui donne en français : [ traduction ]
Merci de ta traduction. Je suis le premier à râler contre les articles en étranger non traduits, mais j'étais un peu pressé au moment de répondre.
L'algorithme dans la norme ECMA est un des plus ch... à décoder !
Je crois bien que je l'avais fait une fois, mais c'est vrai qu'il faut du courage. Je réessaierai.
À vrai dire, ce n'est pas une astuce, et c'est pour ça qu'ils ne
précisent pas. S'il n'y avait pas eu une coquille dans la traduction
tu n'aurais d'ailleurs pas eu besoin d'explication supplémentaire :
En disant coquille tu es bien aimable.
Oui, j'ai le goût de la litote et de l'euphémisme.
Je ne suis pas sûr que le
traducteur (ou l'auteur ?) ait bien compris ce qu'il expliquait...
C'est bien ce que je pense aussi.
[ doc de référence ECMAScript, en anglais ]
Ce qui donne en français :
[ traduction ]
Merci de ta traduction. Je suis le premier à râler contre les articles
en étranger non traduits, mais j'étais un peu pressé au moment de répondre.
L'algorithme dans la norme ECMA est un des plus ch... à décoder !
Je crois bien que je l'avais fait une fois, mais c'est vrai qu'il faut
du courage. Je réessaierai.
À vrai dire, ce n'est pas une astuce, et c'est pour ça qu'ils ne précisent pas. S'il n'y avait pas eu une coquille dans la traduction tu n'aurais d'ailleurs pas eu besoin d'explication supplémentaire :
En disant coquille tu es bien aimable.
Oui, j'ai le goût de la litote et de l'euphémisme.
Je ne suis pas sûr que le traducteur (ou l'auteur ?) ait bien compris ce qu'il expliquait...
C'est bien ce que je pense aussi.
[ doc de référence ECMAScript, en anglais ]
Ce qui donne en français : [ traduction ]
Merci de ta traduction. Je suis le premier à râler contre les articles en étranger non traduits, mais j'étais un peu pressé au moment de répondre.
L'algorithme dans la norme ECMA est un des plus ch... à décoder !
Je crois bien que je l'avais fait une fois, mais c'est vrai qu'il faut du courage. Je réessaierai.
loiseauthierry
Olivier Miakinen <om+ wrote:
À vrai dire, ce n'est pas une astuce, et c'est pour ça qu'ils ne précisent pas. S'il n'y avait pas eu une coquille
;-)) -- 4 Calculs & Astronomie en Javascript : <http://astrophoto.free.fr> 3 " Il y a 10 sortes de personnes sur Terre : ceux qui connais- 2 sent le système binaire et ceux qui ne le connaissent pas " 1....'....12.....'....24.....'....36.....'....48.....'....60.....'....72
Olivier Miakinen <om+news@miakinen.net> wrote:
À vrai dire, ce n'est pas une astuce, et c'est pour ça qu'ils ne
précisent pas. S'il n'y avait pas eu une coquille
;-))
--
4 Calculs & Astronomie en Javascript : <http://astrophoto.free.fr>
3 " Il y a 10 sortes de personnes sur Terre : ceux qui connais-
2 sent le système binaire et ceux qui ne le connaissent pas "
1....'....12.....'....24.....'....36.....'....48.....'....60.....'....72
;-)) -- 4 Calculs & Astronomie en Javascript : <http://astrophoto.free.fr> 3 " Il y a 10 sortes de personnes sur Terre : ceux qui connais- 2 sent le système binaire et ceux qui ne le connaissent pas " 1....'....12.....'....24.....'....36.....'....48.....'....60.....'....72