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

188
Vistas
¿Cómo puedo clonar una matriz con una función sin cambiar la matriz original en javascript?

Me gustaría crear una copia de una matriz pero cambiando la posición de las matrices más internas. Esta es la matriz original:

 const primera = [ [["a","b"],["c","d"]], [["a","c"],["b","d"]], [["a","d"],["c","b"]] ]

Quiero crear otra matriz como esta pero sin modificar la matriz "primera":

 [ [["b","a"],["d","c"]], [["c","a"],["d","b"]], [["d","a"],["b","c"]] ]

He intentado esto, pero cuando consuelo. registro ambas matrices, la matriz original se modifica.

 const primera = [ [["a","b"],["c","d"]], [["a","c"],["b","d"]], [["a","d"],["c","b"]] ] const doubleRound = (arr) => { const newArr = [...arr] for(let i=0; i<newArr.length;i++) { for(let j=0; j<newArr[i].length;j++) { newArr[i][j] = [newArr[i][j][1],newArr[i][j][0]] } } return newArr } const segunda = doubleRound(primera) console.log(primera) console.log(segunda)

¿Alguna idea de cómo puedo hacerlo? Gracias.

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

0

[...arr] es solo una copia superficial, lo que significa que la matriz anidada todavía se pasa por referencia y si cambia una, la versión de clonación también cambia.

Para una copia profunda, puede usar JSON.parse(JSON.stringify(arr)). Esto creará un clon para matrices anidadas

 const primera = [ [["a","b"],["c","d"]], [["a","c"],["b","d"]], [["a","d"],["c","b"]] ] let secundo = JSON.parse(JSON.stringify(primera)); for(let i = 0; i<secundo.length; i++){ for(let j=0; j<secundo[i].length; j++){ [secundo[i][j][0], secundo[i][j][1]] = [secundo[i][j][1], secundo[i][j][0]] } } console.log(primera) console.log(secundo)

about 4 years ago · Juan Pablo Isaza Denunciar

0

... hace una copia superficial. Por lo tanto, las matrices (y los objetos) de varios niveles no se copian profundamente.

Aquí hay una posible solución, basándose en la suya.

En primer lugar, comience con una matriz vacía. Y empuje una matriz vacía para cada i . Para cada índice j , inserte nuevamente en el elemento de matriz secundario.

No hay necesidad de preocuparse por el error de los índices de esta manera.

 const primera = [ [["a","b"],["c","d"]], [["a","c"],["b","d"]], [["a","d"],["c","b"]] ] const doubleRound = (arr) => { const newArr = []; for(let i=0; i<arr.length;i++) { newArr.push([]); for(let j=0; j<arr[i].length;j++) { newArr[i].push([arr[i][j][1],arr[i][j][0]]); } } return newArr } const segunda = doubleRound(primera) console.log(primera) console.log(segunda)

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