JS 读取 MySQL 行到多维数组

JS reading MySQL rows into multidimensional array

在我的 JS 脚本中我有:

var originalArray = [
  ['t00', ['Apple', 'Banana', 'Carrot', 'Yike'], [25, 317, 2]],
  ['t01', ['Mozart', 'Beethoven'], [2, 30, 9, 77, 1, 20]]
];

有一段代码,一生只运行一次,将数组的所有项写入MySQL table :

两个数组字段“tstArr1”和“tstArr2”定义为TEXT 字段。
我可以更改它,以便它以任何格式将这 2 个数组写入数据库。

现在我读了这个 table 并且需要在一个名为 newArray:

的新空数组中重建 originalArray
var newArray = [];

但我无法让它与 originalArray 完全相同。

这是我阅读和(未成功)填充 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]);        //      f o r 
            console.table(newArray);                    //  d e b u g g i n g
            console.log(newArray[1][1][1]);             //
        }
        xhr.send();
    }

控制台显示:

“未定义”很明显。

如何使 newArray 像原始数组一样的多维数组?

谢谢各位聪明人

(拜托,拜托....不jquery)

我假设你的回复是文本,所以第一行的数据是'Apple, Banana, Carrot, Yike''25, 317, 2',那么你需要将字符串拆分成一个数组。

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>