Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

153
Vistas
Actualizar una matriz dividida también actualiza la matriz más grande

Necesito una explicación para algo extraño que noté con el corte de matriz (NodeJs)

 const a = [{ x: 1 }, { x: 3 }, { x: 4 }]; const b = a.slice(0, 2); for (let input of b) { input.y = 1; } console.log(b); console.log(a);

La salida tiene la matriz a y la matriz b actualizadas, aunque en el ciclo for, solo estoy actualizando los elementos en la matriz b. ¿Que me estoy perdiendo aqui?

Editar: Intenté buscar esto y revisé MDN Docs para 'segmentar' pero desafortunadamente no pude encontrar nada.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Según el documento

El método slice() devuelve una copia superficial de una parte de una matriz en un nuevo objeto de matriz seleccionado de principio a fin

Básicamente, crea una nueva matriz, pero los elementos seleccionados seguirán siendo los mismos, aquí están las mismas referencias de los objetos.

Podrías comprobarlo así comparando

 const a = [{ x: 1 }, { x: 3 }, { x: 4 }]; const b = a.slice(0, 2); console.log(a[0] === b[0]) console.log(a[1] === b[1])

about 4 years ago · Juan Pablo Isaza Denunciar

0

Array.slice crea una copia de la matriz, por lo que a !== b , pero dado que a está hecho de objetos, b aún conserva las referencias a esos objetos idénticos. Por lo tanto, cualquier cambio que realice en los objetos de una matriz también afectará a la otra matriz.

Tienes que hacer una copia profunda de a si quieres que b contenga objetos completamente nuevos.

about 4 years ago · Juan Pablo Isaza Denunciar

0

cuando usa el segmento, obtendrá una nueva matriz, pero los objects son los mismos que están en a . Si desea agregar propiedades sin afectar el objeto en a entonces debe clonar los objetos.

Recuerde: el fragmento de código siguiente funcionará si no hay objetos anidados

 const a = [{ x: 1 }, { x: 3 }, { x: 4 }]; const temp = a.slice(0, 2); const b = []; for (let obj of temp) { const o = { ...obj }; oy = 1; b.push(o); } console.log(a); console.log(b);

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda