Comment écraser (ou désactiver, puis définir) un tableau? On dirait que "array = new_array" ne fonctionne pas.JavaScript: Remplacer le tableau
Merci d'avance.
Comment écraser (ou désactiver, puis définir) un tableau? On dirait que "array = new_array" ne fonctionne pas.JavaScript: Remplacer le tableau
Merci d'avance.
Hm, il semble que le problème n'était pas ce que je pensais; Mon erreur a été les lignes suivantes, qui, après tout havn't quelque chose à voir avec les tableaux du tout:
sms.original = eval('(' + data + ')');
sms.messages = sms.original;
sms.original devient un objet, puis sms.messages devient sms.original (Je voulais juste qu'ils aient la même valeur). Les objets contiennent un tableau nommé éléments qui devait rester statique dans l'objet sms.original sms.original, mais quand j'ai changé sms.messages l'objet original a également changé. La solution était simple:
sms.original = eval('(' + data + ')');
sms.messages = eval('(' + data + ')');
Désolé de vous déranger, j'aurais élaboré mais le code est splited dans plusieurs fichiers et fonctions. Merci les gars de toute façon, maintenant la technique d'épissure de Guffa fonctionne pour moi.
Pour créer un tableau vide pour attribuer à la variable, vous pouvez utiliser le constructeur Array:
array = new Array();
Ou vous pouvez utiliser un tableau vide littérale:
array = [];
Si vous avez plusieurs références à un tableau de sorte que vous devez vider l'objet tableau réel plutôt que de remplacer la référence, vous pouvez faire comme ceci:
array.splice(0, array.length);
Je ne suis pas exactement sûr de ce que vous essayez de faire, mais il y a plusieurs façons de réinitialiser un tableau.
Vous pouvez simplement parcourir le tableau existant et définir chaque indice égal à zéro (ou une chaîne vide ou 0 ou quelle que soit la valeur que vous considérez comme une remise à zéro):
for(var i = 0; i < arr.length; i++) {
arr[i] = null;
}
Vous pouvez aussi simplement mettre à jour le référence existante à une nouvelle instance d'un objet:
arr = [];
Cela devrait fonctionner.
array1 = array2;
Si non, veuillez fournir plus de détails.
Je ne pense pas que vous ayez besoin d'énoncer explicitement array1 = null.Si vous venez de mettre à jour la référence, le garbage collector doit reconnaître une instance sans références pointant dessus. – Tom
Pas besoin de deux affectations; le second est suffisant. –
Oui, vous avez raison. –
Effacer un tableau
http://2ality.com/2012/12/clear-array.html
let myArray = [ 1, 2, 3, 4];
myArray = [];
myArray.length = 0;
S'il vous plaît élaborer. – SLaks
Pouvez-vous s'il vous plaît fournir un échantillon de code pour nous de voir pourquoi le code 'array = new_array' ne fonctionne pas? –