首页 > 解决方案 > JSON 中的值未定义

问题描述

我目前正在用 JS 重写我的 Discord Bot,我想使用 i18n 使其成为多语言。但是使用以下代码:

if (message.content.toLowerCase() === `${PREFIX}uptime`) {
    let days = Math.floor(client.uptime / 86400000);
    let hours = Math.floor(client.uptime / 3600000) % 24;
    let minutes = Math.floor(client.uptime / 60000) % 60;
    let seconds = Math.floor(client.uptime / 1000) % 60;
    return message.channel.send(`***__Beethoven:__***` + i18n.__mf("uptime.result"));
}

JSON文件中的那个

 "uptime": {
    "description": "Vérifiez le uptime du bot",
    "result": "Uptime: `${days} jour(s),${hours} heures, ${minutes} minutes, ${seconds} secondes`"
  },

输出未定义到 {} 中的所有项目,我看了一些类似的问题并找到了这个解决方案

var old = JSON.stringify(data).replace(/null/g, '"#"'); //convert to JSON string
var newArray = JSON.parse(old); //convert back to array

但是替换4个数据是不是有点粗略?这是我第一次使用 Stack,我不太喜欢提出问题,而是更喜欢自己解决问题,但我有点卡住了。提前感谢您的回复。

标签: javascriptjson

解决方案


您需要更换:

 const fr = { "result": "Uptime: #dd# jour(s), #hh# heure(s), #mm# minute(s), #ss# seconde(s)" };
 let uptime = fr.result;
 let time = [12,30,45,12];
 [...uptime.matchAll(/(#\w{2}#)/g)].forEach((match,i) => uptime = uptime.replace(match[1],time[i]));
 console.log(uptime)
 


推荐阅读