【发布时间】:2017-11-09 00:55:07
【问题描述】:
我不是要代码示例,只是要尽可能最好的方法
因此,我目前正在创建一个机器人回答服务台,当它识别特定单词时(例如,如果用户输入“stuur mail”,它会说“Als je een mailtje wil sturen kan dit naar help@wordquest.nl')
它适用于数组,所以有一个数组
mailText['stuur', 'mail', 'verzend'];
还有一个函数 (checkMail()) 可以检查数组中有多少给定文本(来自输入字段)。因此,如果用户输入“hoe stuur ik een mail”,它会识别“stuur”和“mail”,并知道使用了 mailText 数组中 66% 的单词。我目前有两个这样的数组。它可以使用 4 个 if 语句来检查哪一个最适合用户输入,但我真的不想编写数百个 if 语句来比较数组并为每个数组创建一个函数。
当前的JS是
window.onkeydown = function (event) {
if (event.keyCode == 13) {
checkQuestions(document.getElementsByClassName('inputField')[0].value);
document.getElementsByClassName('inputField')[0].value = '';
if (event.preventDefault) event.preventDefault(); // This should fix it
return false; // Just a workaround for old browsers
}
}
var mail = ['stuur', 'mail', 'verzend'];
var verzenden = ['kost', 'verzend', 'pakket'];
var errorText = '<h1>An error has occured...</h1><br>There are no answers with the current search query...';
var mailText = 'Als je een mailtje wil sturen kan dit naar <a
href="mailto:help@wordquest.nl">help@wordquest.nl</a>';
var sendText = 'Verzendkosten verschillen per pakket';
var answers = [];
function checkQuestions(quest) {
console.log('');
answer = 0;
finalText = errorText;
answers = [];
mailNum = checkMail(quest);
sendNum = checkSend(quest);
if (mailNum > sendNum) {
answers.push(mailText);
} else if (sendNum > mailNum) {
answers.push(sendText);
} else if (sendNum == mailNum && sendNum != 0) {
answers.push(mailText);
answers.push(sendText);
} else {
answers.push(errorText);
}
setAnswer();
}
function checkMail(question) {
chance = 0;
indent = 100 / mail.length;
for (i = 0; i < mail.length; i++) {
if (question.includes(mail[i])) {
chance = chance + indent;
}
}
console.log('mail is ' + chance + '%');
return chance;
}
function checkSend(question) {
chance = 0;
indent = 100 / verzenden.length;
for (i = 0; i < verzenden.length; i++) {
if (question.includes(verzenden[i])) {
chance = chance + indent;
}
}
console.log('verzenden is ' + chance + '%');
return chance;
}
var finalAns = [];
function setAnswer() {
finalAns = [];
if (answers[0] != errorText) {
finalAns.push('<b>Er zijn ' + answers.length + ' antwoorden gevonden!</b>');
}
for (i = 0; i < answers.length; i++) {
finalAns.push('<p>' + answers[i] + '</p>');
}
document.getElementsByClassName('answers')[0].innerHTML = finalAns.join('');
}
当前页面(带有 HTML):https://codepen.io/timyboy12345/pen/YEpmZz
我知道这可能不是最好的方法,但这只是一个爱好项目......
那么有没有人知道如何制作一个函数来比较用户输入与所有数组的答案组合(最终可能+50)而不为每个数组创建一个函数,并给用户一个正确的文本(我目前正在使用预定义的变量)以及他们问题的答案。
【问题讨论】:
标签: javascript arrays for-loop artificial-intelligence