Неверный вывод функции JavaScript

Мне необходимо сделать, чтобы выводилось всегда наибольшее количество символов до определенной буквы, сейчас выводится почему-то наименьшее, хотя до буквы "s" больше символов, но выводится количество символов до буквы "g", но если их поменять местами, то выведется наибольшее, то есть до "s", помогите пожалуйста решить проблему

const func = (s, a, b) => {
        let aIndex = s.substring(0, s.lastIndexOf(a));
        let bIndex = s.substring(0, s.lastIndexOf(b));
    
        if ((aIndex.length != s.length) < (bIndex.length != s.length)) {
          if (s.includes(a) && s.includes(b)) {
            return ((s != "" && a != "" && b != "")) || ((s.includes(a) || s.includes(b)) && s != "" && (a != "" || b != "")) ? bIndex.length : -1;
          } return -1
        } return ((s.includes(a) && s.includes(b)) && (s != "" && a != "" && b != "")) || ((s.includes(a) || s.includes(b)) && s != "" && (a != "" || b != "")) ? aIndex.length : -1;
      };
    
      console.log(func("aafghjjkfjbbddddsafv", "g", "s"));

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

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

Если я правильно понял, и вам нужно вернуть кол-во символов саммой длинной подстроки, от начала и до символа, то вот примерный код для вашей задачи:

function getMaxCharsCount(str, ch1, ch2) {
  const strBeforeChar1 = str.split(ch1)[0]
  const strBeforeChar2 = str.split(ch2)[0]
  
  if(strBeforeChar1.length > strBeforeChar2.length ) {
    return strBeforeChar1.length
  }
  
  return strBeforeChar2.length
}

console.log(getMaxCharsCount("aafghjjkfjbbddddsafv", "g", "s"));

→ Ссылка