Mi GitHub
tiene múltiples formas de copiar tipos de referencia (como objetos y matrices), estas son algunas de las más comunes:
Copia superficial
1. Objeto.asignar()
const originalObject = {
a: 1, b: 2 };
const copiedObject = Object.assign({
}, originalObject);
2. matriz.slice()
Para matrices:
const originalArray = [1, 2, 3];
const copiedArray = originalArray.slice();
3. Operador de extensión
const originalObject = {
a: 1, b: 2 };
const copiedObject = {
...originalObject };
const originalArray = [1, 2, 3];
const copiedArray = [...originalArray];
Copia profunda
1. método JSON
Este es un enfoque simple pero limitado. No puede copiar funciones y referencias circulares.
const originalObject = {
a: 1, b: {
c: 2 } };
const copiedObject = JSON.parse(JSON.stringify(originalObject));
2. Copia recursiva
Puede escribir una función recursiva para hacer una copia profunda.
function deepCopy(obj) {
if (obj === null || typeof obj !== 'object') {
return obj;
}
const copy = Array.isArray(obj) ? [] : {
};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
copy[key] = deepCopy(obj[key]);
}
}
return copy;
}
const originalObject = {
a: 1, b: {
c: 2 } };
const copiedObject = deepCopy(originalObject);
3. Utilice bibliotecas de terceros
Algunas bibliotecas de terceros (como el _.cloneDeep()
método de lodash) también proporcionan funciones de copia profunda.
const _ = require('lodash');
const originalObject = {
a: 1, b: {
c: 2 } };
const copiedObject = _.cloneDeep(originalObject);
El método que elija depende de sus necesidades específicas y de la complejidad de su objeto.