TransWikia.com

Tabla bidimesional

Stack Overflow en español Asked by Joan on December 24, 2020

Edito pregunta.

Tengo una primera tabla con los siguientes datos:

var taula1 = [8.6,7.5,6.9,9.2,5.1,4.6,7.5,9.9,8.6,7.5,6.9,9.2,5.1,4.6,7.5,9.9,8.6,7.5,6.9,9.2,5.1];

El tema es que tengo que crear una tabla bidimensional para que cada 7 notas haga un salto, ya que cada 7 notas sera un alumno.

var taula1 = [8.6,7.5,6.9,9.2,5.1,4.6,7.5,9.9,8.6,7.5,6.9,9.2,5.1,4.6,7.5,9.9,8.6,7.5,6.9,9.2,5.1];

for (var i = 0; i < taula1.length; i++) {
  taula1[i] = Array(7);
}


console.log(taula1);

One Answer

Creo que la manera más sencilla sería utilizar splice para ir quitando trozos del array original e irlos guardando en el array de salida.

var taula1 = Array.from(Array(140).keys())

function arrayAMatriz(miArray, columnas) {
  let matrizSalida = [];
  while (miArray.length > 0) {
    matrizSalida.push(miArray.splice(0, columnas))
  }
  return matrizSalida;
}

console.log(arrayAMatriz(taula1,7))

Versión "más sencilla" (o mejor dicho más didáctica):

var taula1 = Array.from(Array(140).keys())

let arrayFinal = [];
let arrayTemporal = [];

for (i = 0; i < taula1.length; i++) { //Recorremos el array
  arrayTemporal.push(taula1[i]); //Guardamos cada elemento que recorremos en un array temporal
  if (i !== 0 && (i + 1) % 7 === 0) { //Si la cuenta es un multiplo de 7
    arrayFinal.push(arrayTemporal); //Guardamos el array con los siete números en el array final
    arrayTemporal = []; //Reiniciamos el array
  }
}

console.log(arrayFinal)

Sería más sencillo utilizar un for.. of si vas a recorrer un array en vez de utilizar un for con un contador. Espero que esto te sirva de ayuda para entender, te comenté todo para que lo puedas entender mejor.

Update2: Si quieres crear arrays vacíos:

var taula1 = Array(140);
let taula2 = [];
let tamano = 7;

for (let i = 0; i < (taula1.length / tamano); i++) {
  taula2[i] = Array(tamano);
}

console.log(taula2)

Otra manera:

let taula1 = Array(140);
let tamano = 7;

let taula2 = Array(taula1.length / tamano, ).fill(0).map(
  () => (Array(tamano))
);

console.log(taula2)

Answered by FranAcuna on December 24, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP