Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

170
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda