JavaScript嵌套数组不能使用值?



我正在为一款游戏开发电报程序。步骤1:我必须调用MYSQL来在lua中提取数据。第2步:我必须发送表数据到我的NUI在我的电报。js文件。第三步:我必须把字符串转换成数组。

我在我的telegram.js中有这个,它是被提取数据的确切布局。

var Atest = [
(a1 = [7, 1, 'This is a test', 1, '05:30:35pm', '09/23/2021', 1]),
(b1 = [7, 1, 'Test Test', 1, '05:40:35pm', '09/26/2021', 2]),
];

这在.js文件中工作得很好。当我从电报上拿一根绳子过来的时候。我可以将数据拆分到数组console.log

for (const [key, value] of Object.entries(Atest)) {
console.log(`${key}: ${value}`);
}
0: 7, 1, This is a test, 1, 05:30:35pm, 09/23/2021, 1
1: "diff string ect..."

我遇到的一个问题是内部值不会注册。同样,它将与这个例子一起工作,因为它在我的。js中,但当带来一个字符串时,我无法让js获得内部数组有一个索引。

使用for k,v in pair do在按顺序发布时也不准确,如果我可以将字符串转换为完整的数组,那就没关系了。

在我的菜单程序中需要这样做的代码如下:

telegram.js
function newMessages(nTT) {
for (const [key, value] of Object.entries(nTT)) {
console.log(`${key}: ${value}`);
}
sleep(100);
console.log(nTT);
for (const [k, v] of nTT.entries()) {
var split_date = v[5].split('/');
var newb = document.createElement('a');
var newb_i = document.createElement('input');
newb_i.setAttribute('id', `checkbox_${k + 1}`);
newb_i.setAttribute('class', 'checkbox');
newb_i.setAttribute('type', 'checkbox');
newb_i.setAttribute('value', 'value');
newb_i.setAttribute('data-delete_tele_number', v[6]);
newb.setAttribute('id', 'new_b');
newb.setAttribute('data-id', v[0]);
newb.setAttribute('data-new_old', v[1]);
newb.setAttribute('data-message', v[2]);
newb.setAttribute('data-to_id', v[3]);
newb.setAttribute('data-time', v[4]);
newb.setAttribute('data-date', v[5]);
newb.setAttribute('data-tele_number', v[6]);
newb.setAttribute('onclick', 'reply_click(this)');
newb.innerHTML = `From ${v[0]} on ${split_date[0]}/${split_date[1]} # ${v[6]}`;
document.getElementById('new_menu').appendChild(newb).prepend(newb_i);
}
check_checked();
disable_tele_input();
}

我将不得不改变我的值数据结构因为我使用for k, v循环的方式是使用"id' "在我的数据库中是v[id]而不是在这个例子中调用v[0]。这很简单,并且已经在lua发送的字符串中了但如果我能让字符串注册为一个带有键的完整数组;和";value"那么我刚刚建立的一切都将不起作用,哈哈。

我花了很多时间试图找到一种方法来把字符串在js和重建它,所以它是一个数组。任何帮助都将非常感激。我已经试过了。将每个值Push到一个新的数组中,我使用split()方法添加特殊的"-"解构和重建。我已经使用RegExp做了一个匹配。

这是我的数据库中的实际数据。

MSYQL DB
INSERT INTO `telegram` (`id`, `new_old`, `message`, `to_id`, `time`, `date`, `tele_number`) VALUES
(7, 1, 'This is a test Message. Testing 123.', 1, '05:30:35PM', '09/23/2021', 1),
(5, 1, 'Test. For science.', 7, '05:30:35PM', '09/23/2021', 2),
(7, 0, 'herro', 7, '05:30:35PM', '09/23/2021', 3),
(7, 1, 'Hey', 4, '08:13:17PM', '09/23/2021', 4),
(7, 0, 'Bro', 7, '08:13:17PM', '09/23/2021', 5),
(7, 1, 'Brommblkdljf', 7, '08:13:17PM', '09/23/2021', 6),
(7, 1, 'test', 4, '08:13:17PM', '09/23/2021', 7),
(7, 1, 'bro this is a new messate', 1, '08:13:17PM', '09/23/2021', 8),
(7, 1, 'alskdjflsddlfkj', 7, '08:13:17PM', '09/23/2021', 9),
(7, 1, 'lets see if the whole thing works', 7, '04:56:27PM', '10/04/2021', 10),
(7, 1, 'bro lets try this again', 7, '05:05:23PM', '10/04/2021', 11);

这是来自lua

的排序
telegram_sv.lua
for k, v in ipairs(nTele) do
print(k, json.encode(v))
n[#n+1] = v
end
newTele = json.encode(n)
print(newTele)
telegram.js
function n_string(nT) {
nTS = nT.replace("[", "");
nTS = nTS.replace("]", "");
nTs = nTS.replace(",",", ")
let regexp = /{([^}]*)}/g;
nTT = nTS.match(regexp)
for (const [key, value] of Object.entries(nTT)) {
console.log(`${key}: ${value}`);
}
console.log(nTT[0]);
}
...tons more code under... sends to newMessages(nTT) at some point...

谢谢大家!

¯_(ツ)_/¯

所以我已经发现了我的错误。我忘了JSON.parse().

newTT = [];
for ([k, v] of Object.entries(nTT)) {
newTT.push(JSON.parse(v))
}

最新更新