Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

170
Views
Combinatoria de matrices en javascript, ¿está mal?

Creé este script debido a la necesidad de realizar combinaciones únicas cuando recibo n números de matrices. Funciona, sin embargo, cuando quiero almacenar en una matriz final, escribe algo diferente.

 let options = { "A": ["A1", "A2", "A3", "A4"], "B": ["B1", "B2"], "C": ["C1", "C2", "C3", "C4", "C5"], }; let keys = Object.getOwnPropertyNames(options); let size = keys.length; let final = []; function combinate(n, o) { for (let i = 0; i < options[keys[n]].length; i++) { if (n === (size - 1)) { o = {}; } o[keys[n]] = options[keys[n]][i]; if ((n - 1) >= 0) { combinate(n - 1, o); } if (n === 0) { console.log(o); final.push(o); } } } if (size > 0) combinate(size - 1, {}); console.log("-----------------------------------") console.log(final);

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Está guardando una referencia al mismo objeto varias veces en su matriz y haciendo cambios en ese objeto. Debe colocar una nueva copia del objeto en la matriz.

Cambio: final.push(o); a final.push(Object.assign({}, o));

O, más directamente: final.push({A:oA, B:oB, C:oC});

about 4 years ago · Juan Pablo Isaza Report

0

Debe pasar la referencia del objeto a la función y luego copiar el objeto modificado a la matriz final

 let options = { "A": ["A1", "A2", "A3", "A4"], "B": ["B1", "B2"], "C": ["C1", "C2", "C3", "C4", "C5"], }; let keys = Object.getOwnPropertyNames(options); let size = keys.length; let final = []; function combinate(n, o, fooFinal) { for (let i = 0; i < options[keys[n]].length; i++) { if (n === (size - 1)) { o = {}; } o[keys[n]] = options[keys[n]][i]; if ((n - 1) >= 0) { combinate(n - 1, o, fooFinal); } if (n === 0) { console.log(o); fooFinal.push(o); } } if(n===size-1){ return fooFinal; } } if (size > 0){ final = combinate(size - 1, {},[]); } console.log("-----------------------------------") console.log(final);
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!