• Как изменить переменную в useEffect?

    Для начала изучения, просто последовательно прочитайте родную документацию на английском языке
    https://reactjs.org/tutorial/tutorial.html
    https://reactjs.org/docs/getting-started.html
    Там есть и про стейт и про ефекти
    useSate, useEffect
    Ответ написан
    Комментировать
  • Как сделать кнопку прозрачной?

    @Gagi_Astvats
    В css добавляешь атрибут:
    background-color: rgba(28,28,28,0). Цвет может быть любым, не обязательно 28,28,28. Главное чтоб в конце стоял ноль. Это значит полная прозрачность.
    З.Ы. Понимаю, что ответ уже не нужен. Но мало ли кто зайдет ¯\_(ツ)_/¯
    Ответ написан
    4 комментария
  • Как проверять строки на равность, начиная с определённого момента?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Пока только про сравнение двух строк.

    Предлагаю прокатиться одной строкой вдоль второй.
    _________zzzoooABCuuu
    xxxABCiii      |||
     xxxABCiii     |||
      xxxABCiii    |||
    ...            |||
                xxxABCiii
    ...
                        xxxABCiii
    Начать ещё до их пересечения – это максимально возможное их несовпадение.
    И сдвигать по одной позиции вправо.

    Сравнивать, считая ошибки: количество не совпавших позиций.

    Взять тот сдвиг, где ошибок минимум.

    С «минимальными отличиями» пока не придумал ничего толкового. В этом коде просто предполагаю, что единично-отличные символы находятся не с краю совпадающих строк. Иначе всегда можно присобачить по 1 лишнему символу в начале и в конце, заявив, что именно они в этот раз случайно оказались разными )
    шит-код
    function mostCommon(a, b) {
      const A = a.split('');
      const B = b.split('');
      const min = {
        diff: A.length + B.length,
        index: -A.length,
        start: undefined,
        finish: undefined,
      };
    
      for (let offset = -A.length; offset < B.length; offset++) {
    		let diff = Math.max(0, -offset) + Math.max(offset + A.length - B.length, 0);
    		const initialDiff = Math.max(0, -offset) + Math.max(offset + A.length - B.length, 0);
        const start = Math.min(Math.max(0, offset), B.length);
        const finish = Math.min(Math.max(0, offset + A.length), B.length);
        let matchStart;
        let matchFinish;
        for (let i = start, isMatchStarted = false; i < finish; i++) {
          if (B[i] !== A[i - offset]) diff++;
          else {
            if (!isMatchStarted) {
              matchStart = i;
              isMatchStarted = true;
            }
            matchFinish = i;
          }
        }
    
        if (diff < min.diff) {
          min.diff = diff;
          min.index = offset;
          min.start = matchStart;
          min.finish = matchFinish;
        }
      }
    
      console.log(min, b.substring(min.start, min.finish + 1));
    
      return min;
    }
    
    mostCommon('xxx>abcABCxxx', 'bbbzzz>abcAXCiiiqqq');
    // { diff: 7, index: 3, start: 6, finish: 12 } >abcAXC

    На примере из вопроса:
    mostCommon("1246380924534", "88899212465809");
    // { diff: 6, index: 6, start: 6, finish: 13 } 12465809
    Ответ написан
    3 комментария