¿Cómo copiar el tipo de referencia?

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.

Supongo que te gusta

Origin blog.csdn.net/m0_57236802/article/details/133020847
Recomendado
Clasificación