Tengo este archivo .txt para cambiar a una matriz anidada:
000011000000 000100001100 000001100001 010010001000 100101000100 101010010001 001000001001 000001000111 010100100010 010010010010 000000011100 001001110000al 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:
function readMatrixFile(){ var inputElement = document.getElementById("adjencyMatrixInput"); var fileList = inputElement.files; var plainMatrix = new FileReader(); plainMatrix.readAsText(fileList[0]); plainMatrix.onload = function () { //Add to Matrix renderMatrix(plainMatrix) } }y 2. Dividir el archivo
function renderMatrix(plainMatrix) { var matrix = plainMatrix.result; var mtx = []; matrix = matrix.split("\n"); }Sé que necesito pasar por un bucle for, pero no estoy seguro de cómo obtener la matriz anidada.
Divida la cadena por una nueva línea, luego mapee sobre cada elemento y convierta la cadena en una matriz de caracteres con sintaxis extendida .
const str = `000011000000 000100001100 000001100001 010010001000 100101000100 101010010001 001000001001 000001000111 010100100010 010010010010 000000011100 001001110000` const res = str.split("\n").map(e => [...e]) console.log(res)Para convertir los caracteres en números, asigne la matriz de caracteres y analice cada elemento:
const str = `000011000000 000100001100 000001100001 010010001000 100101000100 101010010001 001000001001 000001000111 010100100010 010010010010 000000011100 001001110000` const res = str.split("\n").map(e => [...e].map(e => +e)) console.log(res)Convierte la matrix en una cadena de unos y ceros, solo necesita dividir la cadena y convertirlos en números
function renderMatrix(plainMatrix) { var matrix = plainMatrix.result; var mtx = matrix.split("\n"); // mtx is now an array of strings of ones and zeros mtx = mtx.map(string => string.split('')); // mtx is now an array of arrays of number string mtx = mtx.map(nested => nested.map(numberString => Number(numberString))); // mtx is now what you want }