62 votes

La fonction array.clear() de JavaScript n'est-elle pas une fonction ?

J'essaie de vider un tableau contenant mes coordonnées dessinées lorsque l'on appuie sur le bouton "clear".

Quand j'appelle drawnDivs.clear() je reçois une erreur indiquant qu'il ne s'agit pas d'une fonction. drawnDivs est certainement un tableau, et j'ai Firebug console.log d'imprimer des choses. C'est hébergé ici .

1 votes

Par curiosité, où avez-vous eu l'idée d'utiliser clear() ? Elle ne semble pas faire partie de Javascript.

0 votes

Ah, on dirait du Visual Basic :)

0 votes

Une recherche google m'a conduit ici : roseindia.net/java/javascript-array/

81voto

Jordan Points 2289

Non, ça ne l'est pas. Mais drawnDivs.length = 0 devrait fonctionner.

1 votes

Cela fonctionnera s'il s'agit d'un véritable tableau, et non d'un objet ressemblant à un tableau.

3 votes

@thomasrutter. Vrai mais cela préservera les références et toutes les autres propriétés et fonctions d'ajout définies sur le tableau.

0 votes

Oui, c'est toujours la meilleure solution dans l'ensemble. Et pour être honnête, cela fonctionnerait toujours sur les objets de type tableau, mais cela ne libérerait pas immédiatement de la mémoire les membres existants. Ce n'est donc qu'un point mineur.

9voto

Mike Ruhlin Points 2192

DrawnDivs = [] ;

28 votes

Attention, car cela ne modifiera pas les autres références à l'objet.

4voto

subhaze Points 4903

Il a été répondu à la question de Stack Overflow Comment vider un tableau en JavaScript ? .

Deux exemples tirés de la réponse :

var A = ['some', 'values', 'here'];

//Method 1

//(This was my original answer to the question)

A = [];

// Method 2 (as suggested by Matthew Crumley)

A.length = 0

Et Voici un bon article sur ces deux méthodes par le Dr. Axel Rauschmayer.

0 votes

La réponse choisie dans le lien mentionné n'est pas la bonne solution car elle n'efface pas les variables qui font référence au tableau en cours d'effacement. La réponse correcte dans ce fil est stackoverflow.com/a/8134354/206687

0 votes

Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien à titre de référence. Les réponses ne comportant qu'un lien peuvent devenir invalides si la page liée change.

0 votes

@AndrewCounts fait. Merci pour le coup de pouce.

2voto

user3271659 Points 11

Une façon optimisée de le faire est :

while (arr.pop()) {}

Voir http://jsperf.com/kbk-clear-array/2 .

2 votes

Cela échoue si le tableau a des emplacements vides. Ceci devrait le faire : while (arr.length > 0) { arr.pop(); }

0 votes

Non, ça devrait l'être : ` while(arr.length){ arr.pop() ; }`

0voto

Debosmit Ray Points 16

Vous pouvez également utiliser la bibliothèque Prototype, puis utiliser la fonction clear() méthode.

1 votes

Il peut y avoir une autre solution, mais je pense qu'il y a beaucoup de moyens plus simples d'effacer un tableau sans avoir recours à des bibliothèques.

3 votes

Oui ça pourrait marcher, mais c'est utiliser un marteau de forgeron pour tuer une mouche.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X