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>
在我的 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>