首页 > 解决方案 > JS将MySQL行读入多维数组

问题描述

在我的 JS 脚本中,我有:

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

有一段代码在其生命周期中运行一次,并将数组的所有项写入 MySQL 表:

在此处输入图像描述

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

现在我读了这张表,需要originalArray在一个名为的新空数组中重建newArray

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)

标签: javascriptmysqlmultidimensional-array

解决方案


我假设您的响应是文本,所以数据是第一行'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>


推荐阅读