Javascript-解释数组的问题

Javascript-解释数组的问题,javascript,arrays,Javascript,Arrays,我正在尝试创建一个bot,它解释数组(exp表)并返回两个级别之间的exp差 我还是JavaScript新手,所以我确信这是我代码中的一部分,我尝试了array.find、array[x]和将公式移动到变量中的各种组合。我就是想不出来 var xparray = [1, 0, 2, 300, 3, 900, 4, 2000, 5, 3700, 6, 6000, 7, 10200, 8, 16200, 9, 23550, 10, 33480, 11, 45280, 12, 60880, 13, 8

我正在尝试创建一个bot,它解释数组(exp表)并返回两个级别之间的exp差

我还是JavaScript新手,所以我确信这是我代码中的一部分,我尝试了array.find、array[x]和将公式移动到变量中的各种组合。我就是想不出来

var xparray = [1, 0, 2, 300, 3, 900, 4, 2000, 5, 3700, 6, 6000, 7, 10200, 8, 16200, 9, 23550, 10, 33480, 11, 45280, 12, 60880, 13, 80480, 14, 104180, 15, 130580, 16, 161080, 17, 196480, 18, 236980, 19, 282680, 20, 333680, 21, 390280, 22, 454180, 23, 525580, 24, 604680, 25, 691780, 26, 786980, 27, 896780, 28, 1021580, 29, 1161780, 30, 1317680, 31, 1480180, 32, 1656080, 33, 1845680, 34, 2049180, 35, 2267080, 36, 2499400, 37, 2749300, 38, 3017100, 39, 3303300, 40, 3608200, 41, 3932200, 42, 4272400, 43, 4629200, 44, 5002900, 45, 5393700, 46, 5801900, 47, 6239500, 48, 6707000, 49, 7205000, 50, 7734000, 51, 8598000, 52, 9656400, 53, 10923600, 54, 12478800, 55, 14350800, 56, 16568400, 57, 19160400, 58, 22155600, 59, 25582800, 60, 29470800, 61, 33940800, 62, 38813800, 63, 44129800, 64, 49938800, 65, 56302800, 66, 63297800, 67, 71019800, 68, 79594800, 69, 89187800, 70, 100013800, 71, 112462800, 72, 126343800, 73, 141899800, 74, 159398400, 75, 179148400, 76, 201478400, 77, 226818400, 78, 255468400, 79, 288218400, 80, 325868400];


var tn = (String(message).length);
// !xp 40 60
var a = (String(message).length)-3;
var b = (String(message).length)-3;
var c = (String(message).length)-5;
var d = (String(message).length)-2;
var t0 = message.substring(b, a); //(-3,-3)
var t1 = message.substring(c, b); //(-5,-3)
var t2 = message.substring(d, tn); //(-2,0)
var na =  function(t0){return (t0*2)-1};
var nb =  function(t1){return (t1*2)-1};
var nc =  function(t2){return (t2*2)-1};
var T1 = xparray.find(function(element) {
    return element > t2});
var T2 = xparray.find(function(element) {
    return element > t0;
});
var T3 = xparray.find(function(element) {
    return element > t1;
});
var t3 = function(T1, T2, T3) {
    if (message.length = 7) {
        return T1 - T2;
    } else {
        return T1 - T3;
    }
};`
我希望这会从字符串
的末尾提取值
40
60
!xp 40 60'
,解释数组并提取
40(3608200)
之后的下一个值和
60(29470800)
之后的值,然后执行计算以将
40
值从
60
(29470800-3608200)
中取出。到目前为止,我认为问题在于
T1
T2
T3
值,因为它们总是返回1,或者一维数组中
1(300)
之后的数组中的值: 您只需使用
indexOf
获取数组中lvl的索引,然后获取下一个值(即lvl所需的xp)。然后减去这两个,你就可以开始了:

var xparray=[1, 0, 2, 300, 3, 900, 4, 2000, 5, 3700, 6, 6000, 7, 10200, 8, 16200, 9, 23550, 10, 33480, 11, 45280, 12, 60880, 13, 80480, 14, 104180, 15, 130580, 16, 161080, 17, 196480, 18, 236980, 19, 282680, 20, 333680, 21, 390280, 22, 454180, 23, 525580, 24, 604680, 25, 691780, 26, 786980, 27, 896780, 28, 1021580, 29, 1161780, 30, 1317680, 31, 1480180, 32, 1656080, 33, 1845680, 34, 2049180, 35, 2267080, 36, 2499400, 37, 2749300, 38, 3017100, 39, 3303300, 40, 3608200, 41, 3932200, 42, 4272400, 43, 4629200, 44, 5002900, 45, 5393700, 46, 5801900, 47, 6239500, 48, 6707000, 49, 7205000, 50, 7734000, 51, 8598000, 52, 9656400, 53, 10923600, 54, 12478800, 55, 14350800, 56, 16568400, 57, 19160400, 58, 22155600, 59, 25582800, 60, 29470800, 61, 33940800, 62, 38813800, 63, 44129800, 64, 49938800, 65, 56302800, 66, 63297800, 67, 71019800, 68, 79594800, 69, 89187800, 70, 100013800, 71, 112462800, 72, 126343800, 73, 141899800, 74, 159398400, 75, 179148400, 76, 201478400, 77, 226818400, 78, 255468400, 79, 288218400, 80, 325868400];
var消息='!xp 40 60';
var lvls=[parseInt(message.split(“”)[1]),parseInt(message.split(“”)[2]);//获取有问题的lvl
lvls=lvls.map(l=>xparray[xparray.indexOf(l)+1]);//获取有问题的xp值

console.log(lvls[1]-lvls[0]);//减去xp值
我建议您用它制作一个二维数组。
[[lvl,xp],[lvl,xp],…]
将更易于阅读和处理
消息的内容
?请同时添加想要的结果。@MauriceNino谢谢,这更有意义。@Nina Scholz这是一个用于不和谐的机器人,因此“message”是用户在触发机器人if和case开关时发出的字符串。对于机器人的此功能,消息将是“!xp 40 60”这是我收到的最好的回复之一,谢谢!这里有一些我不知道存在的新信息,还有一些我一开始无法用语言表达的问题的答案,比如数组是一个没有键的列表。谢谢你抽出时间,你真的帮了我大忙!