Clone/copie d'une Carte d'instance
Comment puis-je clone/copie d'une carte en JavaScript?
Je sais comment cloner un tableau mais comment puis-je clone/copie d'une carte?
var myArray = new Array(1, 2, 3);
var copy = myArray.slice();
//now I can change myArray[0] = 5; & it wont affect copy array
//Can I just do the same for map?
var myMap = new ?? //in javascript is it called a map?
var myMap = {"1": 1, "2", 2};
var copy = myMap.slice();
- ES6 vous permet de
let copy = {...myMap};
Vous devez vous connecter pour publier un commentaire.
Un moyen simple (faire une copie superficielle) est de copier chaque propriété de la source de la carte à la carte:
Avec l'introduction de Cartes en JavaScript, il est assez simple en considérant le constructeur accepte un objet iterable:
Documentation ici: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map
Map.prototype.entries
etMap.prototype.set
. Cela signifie: Si vous écrivez une classe qui étend la classe Map et remplace l'une de ces deux méthodes, alors il suffit de la rédactionnew ExtendedMap( extendedMapObj )
ne fonctionnera pas si l'étendue des méthodes s'appuient sur des propriétés qui ne sont pas disponibles pour le super.JQuery a une méthode à l'extension d'un objet (la fusion de deux objets), mais cette méthode peut également être utilisé pour cloner un objet en fournissant un objet vide.
Plus d'informations peuvent être trouvées dans le jQuery documentation.
Très simple de cloner une carte, car ce dont vous parlez, c'est juste un objet. Il y a un
Map
dans l'ES6 que vous devriez regarder, mais pour copier un objet, il suffit d'utiliserObject.assign()
Vous pouvez également utiliser
cloneDeep()
de LodashIl n'y a rien de construit dans.
Soit d'utiliser un bien testé récursive de la propriété à la photocopieuse ou si la performance n'est pas un problème, serialise en JSON et analyser de nouveau à un nouvel objet.
Il n'est pas intégré dans le clone/copie. Vous pouvez écrire votre propre méthode, soit en surface ou en profondeur copie:
Tous les objets en Javascript sont dynamiques et peuvent être affectés de nouvelles propriétés. Une "carte" comme vous référer à la il est en fait juste un objet vide. Un Tableau est aussi un objet, avec des méthodes telles que
slice
et des propriétés commelength
.J'ai remarqué que la Carte devrait exiger un traitement spécial, donc avec toutes les suggestions dans ce fil, le code sera:
Si vous avez besoin de faire une copie d'une Carte, vous pouvez utiliser les éléments suivants:
Où
source
est la Carte originale de l'objet.Remarque: cela peut ne pas être approprié pour tous les cas d'utilisation où les valeurs de la Carte ne sont pas sérialisables, pour plus de détails, voir: https://stackoverflow.com/a/122704/10583071