Javascript:If语句包含未解析的函数
嗨,我还是javascript新手,我不明白为什么这个if语句不能解析 消息是一个变量字符串,以“!leve alc 35”为例Javascript:If语句包含未解析的函数,javascript,if-statement,Javascript,If Statement,嗨,我还是javascript新手,我不明白为什么这个if语句不能解析 消息是一个变量字符串,以“!leve alc 35”为例 var leve = parseInt(message.split(' ')[2]); var leves = function() { if (Number(leve) < 50) { [(message.split(' ')[1]).toUpperCase(), round5(parseInt(message.split(' ')[
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("");
}
};
舍入公式
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=消息=>{
var[,string,value]=message.split(“”);
值=+值<50?第五轮(+值):第二轮(+值);
返回[string.toUpperCase(),value].join(“”);
};
控制台日志(leves(“!leve alc 35”);
控制台日志(leves(“!leve alc 54”)代码>我认为您的函数应该是这样的。假定“message”为全局变量
var leves = function() {
if (Number(leve) < 50) {
return [(message.split(' ')[1]).toUpperCase(),
round5(parseInt(message.split(' ')[2]))
].join("");// Getting the lvls in question
//leves = leves.join("");
} else {
return [(message.split(' ')[1]).toUpperCase(),
round2(parseInt(message.split(' ')[2]))
].join(""); // Getting the lvls in question
//leves = leves.join("");
}
};
var leves=function(){
如果(数量(级别)<50){
返回[(message.split(“”)[1]).toUpperCase(),
round5(parseInt(message.split(“”)[2]))
].join(“”;//获取有问题的LVL
//leves=leves.join(“”);
}否则{
返回[(message.split(“”)[1]).toUpperCase(),
round2(parseInt(message.split(“”)[2]))
].join(“”;//获取有问题的LVL
//leves=leves.join(“”);
}
};
我相信你想写的是
var leve = parseInt(message.split(' ')[2]);
if (Number(leve) < 50) {
var leves = [
(message.split(' ')[1]).toUpperCase(),
round5(parseInt(message.split(' ')[2]))
]; // Getting the lvls in question
leves = leves.join("");
} else {
var leves = [
(message.split(' ')[1]).toUpperCase(),
round2(parseInt(message.split(' ')[2]))
]; // Getting the lvls in question
leves = leves.join("");
}
但这仍然有很多重复。我建议你写信
var parts = message.split(' ');
var leve = parseInt(parts[2], 10);
leve = (leve < 50) ? round5(leve) : round2(leve);
var leves = parts[1].toUpperCase() + leve;
var parts=message.split(“”);
var-leve=parseInt(第[2]部分,第10节);
级别=(级别<50)?第五轮(水平):第二轮(水平);
var leves=parts[1].toUpperCase()+leve;
您所说的“无法解决”是什么意思?您的文档中没有任何返回语句function@CodeManiac这有关系吗?无论如何都不会调用该函数。leves
引用绑定到外部作用域中的函数的变量,然后尝试将leves
重新分配给调用本身的join
的结果,这没有任何意义。您如何处理这些数组文本?@Bergi无需删除括号,是的,你是对的,逗号将充当定界数组element@Bergi它正在工作,我找不到任何问题。查看此fiddler链接哦,你是对的,我被消息周围不必要的括号完全弄糊涂了。split(“”)[1]
感谢你花时间处理我的混乱,此代码适用于第5轮函数,但由于某些原因,50以上的值无法正确返回,因为“!leve alc 54”我希望使用ALC56,但我看到了ALC542。它似乎在初始值的末尾加了一个2?这是一个问题,通过传递一个字符串和一个后续的加法。啊,我看到了,这个值需要+来表示它是一个数字,对吗?感谢您的帮助,现在这一切都很顺利:)
var leve = parseInt(message.split(' ')[2]);
var leves = (Number(leve) < 50)
? [
(message.split(' ')[1]).toUpperCase(),
round5(parseInt(message.split(' ')[2]))
]
: [
(message.split(' ')[1]).toUpperCase(),
round2(parseInt(message.split(' ')[2]))
];
leves = leves.join("");
var parts = message.split(' ');
var leve = parseInt(parts[2], 10);
leve = (leve < 50) ? round5(leve) : round2(leve);
var leves = parts[1].toUpperCase() + leve;