【问题标题】:JS reading MySQL rows into multidimensional arrayJS将MySQL行读入多维数组
【发布时间】:2021-12-25 15:53:06
【问题描述】:

在我的 JS 脚本中:

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

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

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

现在我阅读了这张表,需要在一个名为 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)

【问题讨论】:

  • DB_respone 中的数据到底是什么?
  • @VLAS - DB_response 中的数据与@Abelucho 在他的回答中假设的完全一样,这对我来说是完美的。无论如何谢谢!

标签: javascript mysql multidimensional-array


【解决方案1】:

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

【讨论】:

  • 天哪!太感谢了。我花了2个晚上。我要去睡觉了。再次感谢您,晚安...!
猜你喜欢
  • 2015-04-26
  • 2011-05-26
  • 1970-01-01
  • 2014-05-28
  • 2011-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-03
相关资源
最近更新 更多