es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Archivo de texto a Matriz Anidada de JavaScript

Tengo este archivo .txt que necesito cambiar a un array anidado:

000011000000
000100001100
000001100001
010010001000
100101000100
101010010001
001000001001
000001000111
010100100010
010010010010
000000011100
001001110000

en el formato:

var data = [
        [0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0],
        [0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1],
        [0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0],
        [1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0],
        [1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1],
        [0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1],
        [0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1],
        [0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0],
        [0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0],
        [0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0],
        [0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0]
    ]

Lo que he hecho hasta ahora es:
1. Leer el archivo:

function readMatrixFile() {
    var inputElement = document.getElementById("adjencyMatrixInput");
    var fileList = inputElement.files;
    var plainMatrix = new FileReader();
    plainMatrix.readAsText(fileList[0]);
    plainMatrix.onload = function () {
        // Agregar a la matriz
        renderMatrix(plainMatrix)
    }
}
  1. Dividir el archivo
function renderMatrix(plainMatrix) {
    var matrix = plainMatrix.result;
    var mtx = [];

    matrix = matrix.split("\n");
}

Sé que necesito hacer un bucle for, pero no estoy seguro de cómo obtener el array anidado.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para crear una matriz anidada a partir del archivo de texto dado, debe dividir cada línea del archivo en caracteres individuales y luego ingresar esos caracteres en una nueva matriz anidada. Puede hacer esto usando bucles for anidados: uno para iterar a través de cada línea del archivo y otro para iterar a través de cada carácter en esa línea.

    Aquí hay un ejemplo de cómo hacer esto:

    function renderMatrix(plainMatrix) {
      var matrix = plainMatrix.result;
      var mtx = [];
    
      matrix = matrix.split("\n");
    
      for (var i = 0; i < matrix.length; i++) {
        var nestedArray = [];
    
        for (var j = 0; j < matrix[i].length; j++) {
          var character = matrix[i][j];
          var value = parseInt(character);
    
          nestedArray.push(value);
        }
    
        mtx.push(nestedArray);
      }
    
      console.log(mtx); // Esto registrará la matriz anidada en la consola
    }
    

    En este ejemplo, la variable matriz se divide en un array de líneas usando la función .split (). El primer bucle for itera a través de cada línea en matrix, creando una nueva matriz vacía llamada nestedArray para cada línea.

    El segundo bucle for itera a través de cada carácter en la línea actual de matrix. Se usa la función parseInt () para convertir el carácter de una cadena a un número, y este número se ingresa en nestedArray.

    Finalmente, nestedArray se ingresa en mtx, la matriz que contendrá todas las matrices anidadas.

    Con este código, debería poder leer el archivo de texto y crear la matriz anidada necesaria en el formato mostrado en la pregunta.

Comments are closed.