странная ошибка читайте основную часть

var templates = [
{
  "q": ["привет", "hello", "приветик", "ку", "hallo", "бонжур", "bonjour", "кукусики", "приветули", "здравствуй", "здравствуйте"],
  "a": ["Привет, привет!", "Hello!", "Приветик!"]
},

{
  "q": ["как дела", "как жизнь", "как делишки", "привет как дела"],
  "a": ["Спасибо, хорошо, а у Вас?", "Обстановка по кайфу... А как у вас?"]
},

];
function chatting(templates){
  
  this.templates = templates;

  this.input = $("#input").val().toLowerCase();

  this.tempLen = this.templates.length;

  this.inLen = this.input.length;
  
  printClient();

  this.notUnderstand = true;

  this.input = ignorePunct(this.input);

  for(var i = 0; i < tempLen; i++){
    let len = this.templates[i].q.length;
    for(var x = 0; x < len; x++){
      if(this.input == this.templates[i].q[x]){
        
        let aLen = this.templates[i].a.length - 1;
        let rand = random(aLen)
        printVanja(this.templates[i].a[rand]);
        this.notUnderstand = false;
      }
    }
  }
  if(this.notUnderstand){
    printVanja("НЕ ПОНЕЛ");
  }
  return false;
}

ошибка в том, что при передаче некоторых слов например: приветик, бот пишет НЕ ПОНЕЛ, хотя это слово есть в шаблоне, но при этом П,р.!иВе;т!!! он читает и выводит рандомное сообщение, но возможно что такая же ошибка распрастроняется и на ответы.


Ответы (1 шт):

Автор решения: Zhihar

Повторил код, выкинул все лишнее и он работал с "приветик". Тогда оставил всё, что только можно оставить -

Скорее всего у вас ошибка тут:

    let aLen = this.templates[i].a.length - 1;
    let rand = random(aLen)
    printVanja(this.templates[i].a[rand]);

если random - это Math.random, то она выдает не целое число чаще всего и тогда переход куда-то в массив будет невозможно и надо делать так:

let rand = Math.ceil(Math.random(aLen))
→ Ссылка