Maison >interface Web >js tutoriel >Comment copier en profondeur un tableau d'objets interconnectés en JavaScript ?

Comment copier en profondeur un tableau d'objets interconnectés en JavaScript ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-11 19:51:14199parcourir

How to Best Deep Copy an Array of Interconnected Objects in JavaScript?

Copie d'un tableau d'objets interconnectés

Lorsque vous travaillez avec des structures de données complexes, telles que des tableaux d'objets avec des références à d'autres objets dans le même tableau, créez une véritable copie complète peut être un défi. Explorons différentes approches :

Création d'une copie profonde avec structuredClone

La solution moderne pour la copie profonde utilise structuredClone() :

array2 = structuredClone(array1);

Cette méthode prend en charge un large éventail de types de données et est pris en charge par la plupart des navigateurs.

Création d'une copie approfondie avec JSON.parse

Pour les objets avec un contenu sérialisable JSON, une solution simple sur une seule ligne est :

let clonedArray = JSON.parse(JSON.stringify(nodesArray))

Cependant, il présente des limites avec un contenu non sérialisable et des problèmes de performances par rapport aux autres méthodes.

Création d'une copie profonde avec l'opérateur de propagation

Si votre tableau contient des objets peu profonds, l'opérateur de propagation combiné with .map() peut être utilisé pour une copie approfondie rapide et efficace :

clonedArray = nodesArray.map(a => ({...a}));

Cette méthode surpasse considérablement JSON.parse.

Considérations

  • Performances : Les performances de la copie profonde peuvent varier en fonction de la taille et de la complexité de vos structures de données. Il est recommandé d'évaluer différentes approches.
  • Compatibilité : structuredClone() nécessite une version de navigateur relativement nouvelle. Si la compatibilité pose problème, utilisez des méthodes alternatives.
  • Sérialisation ou clonage : Si vos objets doivent être envoyés sur le réseau, vous pouvez envisager la sérialisation au lieu du clonage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn