En mi script JS tengo:
var originalArray = [ ['t00', ['Apple', 'Banana', 'Carrot', 'Yike'], [25, 317, 2]], ['t01', ['Mozart', 'Beethoven'], [2, 30, 9, 77, 1, 20]] ];Hay un fragmento de código, que se ejecuta UNA VEZ en su vida, y escribe todos los elementos de la matriz en la tabla MySQL:
Los dos campos de matriz " tstArr1 " y " tstArr2 " se definen como campos de TEXTO .
Puedo cambiar esto para que escriba en la base de datos estas 2 matrices en cualquier formato.
Ahora leo esta tabla y necesito reconstruir originalArray en una nueva matriz vacía llamada newArray :
var newArray = []; Pero no puedo hacer que sea exactamente igual que el originalArray .
Así es como leo y (sin éxito) newArray :
function readEvent() { var xhr = new XMLHttpRequest(); xhr.open('GET', 'DB_read.php', true); xhr.onload = function () { if (this.status == 200) { var DB_response = JSON.parse(this.responseText); for (let i in DB_response) { let tstArr1_from_db = DB_response[i].tstArr1; let tstArr2_from_db = DB_response[i].tstArr2; newArray.push(DB_response[i].tstName, tstArr1_from_db, tstArr2_from_db); } } console.table(originalArray); // console.log(originalArray[1][1][1]); // for console.table(newArray); // debugging console.log(newArray[1][1][1]); // } xhr.send(); }Lo "indefinido" es obvio.
¿Cómo puedo hacer que newArray sea una matriz multidimensional como la original?
Gracias, gente inteligente.
(Por favor, por favor... sin jquery)
Supongo que su respuesta es texto, por lo que los datos son 'Apple, Banana, Carrot, Yike' y '25, 317, 2' para la primera fila, luego debe dividir la cadena en una matriz.
var originalArray = [ ['t00', ['Apple', 'Banana', 'Carrot', 'Yike'], [25, 317, 2]], ['t01', ['Mozart', 'Beethoven'], [2, 30, 9, 77, 1, 20]] ]; //assumed your response have this structure var DB_response = [ {tstName:'t00', tstArr1:'Apple, Banana, Carrot, Yike', tstArr2:'25, 317, 2'}, {tstName:'t01', tstArr1:'Mozart,Beethoven', tstArr2:'2, 30, 9, 77, 1, 20'} ]; function test() { var newArray = []; DB_response.forEach(function(db) { field1 = db.tstName; field2 = db.tstArr1.split(',').map(function(s) {return s.trim()}) field3 = db.tstArr2.split(',').map(function(s) {return s.trim()}) newArray.push([field1,field2,field3]); }) console.log(originalArray,newArray); } <button onclick='test()'>Test</buton>