当我的RegExp找不到匹配项时,我无法返回语句:
function ai(message) {
if (username.length < 3) {
username = message;
send_message("Oh, well hello " + username + ", My name is Donald J Trump and i'm a big boy");
} else {
for (i = 0; i <= botChat.length; i++) {
var re = new RegExp(botChat[i][0], "i");
if (re.test(message)) {
var length = botChat[i].length - 1;
var index = Math.ceil(length * Math.random());
var reply = botChat[i][index];
send_message(reply);
}
}
}
}
当我输入一个短语时,它可以按照for
循环正确匹配数组中的第一行。我遇到的问题是,当我尝试添加else
语句时,它不再正确地循环遍历我的数组。
我试过了:
else if (re.test(message) === false) {
send_message("i can't be expected to know everything");
}
但它不起作用,它阻止循环循环过botChat[0][0]
。
我也试过了:
if (send_message().val() == "") {
// ...
}
但每次我的代码都不再有效。有没有一种方法可以在我的数组中添加一些内容,上面写着'如果你上面没找到匹配项,那就选择这个'?
或者只是一种处理我的代码以便if / else有效的方法吗?
附件是codepen。
答案 0 :(得分:0)
我检查了你的codepen,第190和194行console.log(send_message().val());
似乎打破了循环,因为这些行引发异常,因为send_message()
返回undefined
而undefined
没有.val()
方法。
你的正则表达式工作正常。我建议不要每次迭代都创建新的RegExp对象,而是使用数组if (botChat[i][0].test(message))
中定义的对象,开销会更少。