您好,我还是 javascript 的新手,我不明白为什么这个 if 语句无法解析
message是一个可变字符串,以"!leve alc 35"为例。
var leve = parseInt(message.split(' ')[2]);
var leves = function() {
if (Number(leve) < 50) {
[(message.split(' ')[1]).toUpperCase(),
round5(parseInt(message.split(' ')[2]))
]; // Getting the lvls in question
leves = leves.join("");
} else {
[(message.split(' ')[1]).toUpperCase(),
round2(parseInt(message.split(' ')[2]))
]; // Getting the lvls in question
leves = leves.join("");
}
};
我希望此代码能够确定 String(message) 末尾的值是否大于 49 (50+),如果是,则使用第 2 轮公式而不是第 5 轮公式。我知道它的 if 语句有问题,因为每一行都单独运行良好并返回我的预期值。我将我的 if 语句与 W3School 上的语句进行了比较,我认为我没有遗漏任何内容。我将 if 语句放在一个函数中,这阻止了我在加载脚本时收到的初始错误,但我现在想知道这是否是问题所在?
编辑
返回函数(这是一个不和谐的机器人):
case 'leve':
bot.sendMessage({
to: channelID,
message: leves
});
break;
舍入公式
var round5 = function round5(x) {
return Math.ceil(x / 5) * 5;
};
var round2 = function round2(x) {
return Math.ceil((x+1) / 2) * 2;
};
最佳答案
您可以存储拆分后的值并根据该值返回一个具有四舍五入值的新字符串。
const
round5 = x => Math.ceil(x / 5) * 5,
round2 = x => Math.ceil((x + 1) / 2) * 2,
leves = message => {
var [, string, value] = message.split(' ');
value = +value < 50 ? round5(+value) : round2(+value);
return [string.toUpperCase(), value].join("");
};
console.log(leves('!leve alc 35'));
console.log(leves('!leve alc 54'));
关于Javascript:如果语句包含未解析的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57135799/