desarrolladores; Tengo tres arrays : Días ( columnas ), Asunto ( filas ), Datos ( celdas )
let Days = ["Monday", "Tuesday", "Wednesday"]; let Subject = [ "Economics", "geography", "theatre", "music", "mathematics", "psychology", "marketing", "business", "journalism", "languages", ]; const Data = [ ["10:00", "12:10", "13:30"], ["08:30", "12:10", "14:30"], ["14:10", "15:15", "19:10"], ["20:20", "20:50", "23:00"], ["09:10", "10:00", "19:00"], ["10:12", "16:40", "18:10"], ["08:30", "12:10", "14:30"], ["14:10", "15:15", "19:10"], ["20:20", "20:50", "23:00"], ["08:10", "14:20", "20:20"], ]; Quiero hacer una relación entre esas matrices:
Intenté algo como jugar con módulo y hacer un bucle sobre el producto de filas y celdas :
const cols = Days.length; const rows = Subject.length; const len = Subject.length * Days.length; const table = []; for (let i = 0, j = 0; i < len; i++) { table.push([ Subject[i % rows], Days[j % cols], Data[i % rows][j % cols], ]); j++; } console.table(table);Pero da resultados no esperados en orden:

Todavía intento clasificarlo, pero no funciona, ya que la clasificación se clasificaría en orden alfabético, lo que no mantiene el orden.
console.table(table.sort((a, b) => a[0].localeCompare(b[0])));
Gracias de antemano, cualquier sugerencia es bienvenida y apreciada.
puede hacerlo fácilmente con solo cortar dos veces, filas y columnas.
let Days = ["Monday", "Tuesday", "Wednesday"]; let Subject = [ "Economics", "geography", "theatre", "music", "mathematics", "psychology", "marketing", "business", "journalism", "languages", ]; const Data = [ ["10:00", "12:10", "13:30"], ["08:30", "12:10", "14:30"], ["14:10", "15:15", "19:10"], ["20:20", "20:50", "23:00"], ["09:10", "10:00", "19:00"], ["10:12", "16:40", "18:10"], ["08:30", "12:10", "14:30"], ["14:10", "15:15", "19:10"], ["20:20", "20:50", "23:00"], ["08:10", "14:20", "20:20"], ]; const cols = Days.length; const rows = Subject.length; const len = Subject.length * Days.length; const table = []; for (let i = 0; i < rows; i++) { for (let j = 0; j < cols; j++) { table.push([ Subject[i], Days[j], Data[i][j], ]); } } console.table(table);Simplemente haciendo la clasificación mientras se realiza el proceso del producto, de la siguiente manera:
for (let i = 0; i < rows; i++) { for (let j = 0; j < cols; j++) { table.push([ Subject[I], Days[j], Data[i][j], ]); } }En este caso, estará iterando cada fila de Asunto con todos los valores correspondientes de Días, antes de pasar a la siguiente fila de Asunto, terminando con el orden de elementos deseado.
For example: the first iteration will be as follows (representing the first three row of the resulting array) i = 0 (Subject[i] = "Economics") j = 0 (Days[j] = "Monday") ---> Data[i][j] = "10:00" j = 1 (Days[j] = "Tuesday") ---> Data[i][j] = "12:10" j = 2 (Days[j] = "Wednesday") ---> Data[i][j] = "13:30"