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

169
Vistas
¿Cómo puedo crear varias matrices en cada uno de los valores de otra matriz de objetos?

Así que actualmente tengo esta estructura de matriz:

 const object = { object1: ["01", "02"], object2: ["item1", "item2", "item3"], object3: ["product1", "product2"] }

y necesito transformarlo a:

 const array = [ { object1: "01", object2: "item1", object3: "product1", }, { object1: "02", object2: "item1", object3: "product1", }, { object1: "01", object2: "item2", object3: "product1", }, { object1: "01", object2: "item3", object3: "product1", }, { object1: "02", object2: "item2", object3: "product1", }, { object1: "02", object2: "item3", object3: "product1", }, { object1: "01", object2: "item1", object3: "product2", }, { object1: "02", object2: "item1", object3: "product2", }, { object1: "02", object2: "item2", object3: "product2", }, { object1: "03", object2: "item2", object3: "product2", }, ]

Entonces, básicamente, necesito crear una nueva matriz basada en cada combinación en el objeto inicial de las matrices, y la matriz inicial estará en los miles de elementos.

Esto es lo que tengo hasta ahora, pero no tuve suerte al obtener la estructura que necesito.

 const object = { object1: ["01", "02"], object2: ["item1", "item2", "item3"], object3: ["product1", "product2"] } const arr = [] Object.entries(object).forEach((element, i) => { element.forEach((innerElement, j) => { let _element = {[`${element[0]}`]:element[1][j]} arr.push(_element) }) }); console.log("map", arr)

¿Hay alguna forma de transformar los datos a la estructura que necesito? ¡Gracias por adelantado!

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

0

Sugeriría crear una solución genérica que repita las posibles propiedades y valores del object de plantilla y cree una matriz de todos los resultados posibles.

Crearíamos una función addPossibleValues() que expandirá la matriz de objetos para cada clave en el objeto de plantilla. Cada ronda aumentará el número de objetos por la longitud sucesiva de la matriz de propiedad relevante.

 const object = { object1: ["01", "02"], object2: ["item1", "item2", "item3"], object3: ["product1", "product2"] } function addPossibleValues(arr, property, possibleValues) { return possibleValues.flatMap(v => { return (arr.length ? arr: [{}]).map(x => { return { ...x, [property]: v}; }) }); } let result = []; for(let key in object) { result = addPossibleValues(result, key, object[key]); } console.log('Result:', result)
 .as-console-wrapper { max-height: 100% !important; }

También puede hacer esto usando una llamada Array.reduce() :

 const object = { object1: ["01", "02"], object2: ["item1", "item2", "item3"], object3: ["product1", "product2"] } function addPossibleValues(arr, property, possibleValues) { return possibleValues.flatMap(v => { return (arr.length ? arr: [{}]).map(x => { return { ...x, [property]: v}; }) }); } let result = Object.keys(object).reduce((acc, key) => { return addPossibleValues(acc, key, object[key]); }, []); console.log('Result:', result)
 .as-console-wrapper { max-height: 100% !important; }

about 4 years ago · Juan Pablo Isaza Denunciar

0

Ocurrencia

Generación paso a paso del producto cruzado de las matrices en el objeto original:

  • Iterar a través de todas las propiedades del objeto original.

  • Considere alguna iteración.

  • Supongamos que tenemos una matriz provisional llena en las iteraciones anteriores

  • Para cada uno de los valores cv de la matriz almacenada como la propiedad cp de la iteración actual en el objeto original...

    • tomar cada objeto de la matriz de resultados provisionales
    • clonarlo
    • agregue una propiedad cp al objeto clonado y rellénelo con el valor cv .
    • agregar el clon a la matriz de resultados
  • Concluya la iteración eliminando los originales de la operación de conificación de la matriz de resultados (estos ahora están obsoletos porque son el producto cruzado de una dimensión menos).

  • Inicialice el procedimiento while con una matriz con un solo objeto vacío

Código

 const object = { object1: ["01", "02"], object2: ["item1", "item2", "item3"], object3: ["product1", "product2"] } let a_res = [{}]; for (s_key in object) { let n_currentCount = a_res.length ; object[s_key].forEach ( ps_item => { for (let i = 0; i < n_currentCount; i++) { let o_new = Object.assign({ [s_key]: ps_item }, a_res[i]) ; a_res.push(o_new); } }); a_res.splice(0, n_currentCount); // in situ } console.log(a_res);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Primero, debo disculparme por mi inglés. Podrías usar 3 forEach anidados.

 const object = { object1: ["01", "02"], object2: ["item1", "item2", "item3"], object3: ["product1", "product2"] } var arr = [] object.object3.forEach(o3 => object.object2.forEach(o2 => object.object1.forEach(o1 => arr.push({object1: o1, object2: o2, object3: o3})))); console.log(arr);

Cambia el orden de forEach si prefieres cambiar el orden de las combinaciones

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