Искать общую подстроку

Сценарий ищет самую большую подстроку в массиве строк. Но если строка не начинается с «А», поиск не выполняется. Как реализовать поиск подстрок внутри? ("ABCDE", "XBCDJL") = BCD

var array = ["ABCDEFZ", "ABCDXYZ"],
  prefix = array[0],
  len = prefix.length;
for (i=1; i<array.length; i++) {
  for (j=0, len=Math.min(len,array[j].length); j<len; j++) {
    if (prefix[j] != array[i][j]) {
      len = j;
      prefix = prefix.substr(0, len);
      break;
    }
  }
}

хорошо зацикливайтесь, пока не найдете первое совпадение ....

epascarello 22.10.2018 19:50
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете попробовать следующее

var array = ["ABCDEFZ", "EBCDXYZ"];

/* In case there is a match, it has to exist in the first string as well. 
 * So, irrespective of the length of first string,
 * we will do our iterations w.r.t. its length */
function findLargestSubstr(arr) {
  if (!arr.length) return;
  let length = arr[0].length; // length over the first item in array
  let val; // value that will be returned
  /* looping through the length of first element combinations
   * where the first combination will be the complete string and
   * the second will be 1 less than the length and then so on */
  outer: for (let i = length; i > 0; i--) {
    // For every iteration, create the subset of substring that need to be checked
    for (let j=0; j <= length - i; j++) {
      // Get the substring
      let temp = arr[0].substr(j, i);
      // Check for the substring for every element in the array
      if (arr.every(v => v.includes(temp))) {
        /* If the match is found, then 
         * set the return value to the match and break the loop's */
        val = temp;
        break outer;
      }
    }
  }
  return val;
}

console.info(findLargestSubstr(array));

Поскольку temp по определению является подстрокой arr[0], мне любопытно, почему вам нужно проверить это снова с помощью: if (arr.every(v => v.includes(temp)))? Разве не достаточно проверить if (arr[1].includes(temp))?

Mark 22.10.2018 20:34

@Mark Если в массиве было 2 элемента, то да, а если элементов больше, то нет.

Nikhil Aggarwal 23.10.2018 04:36

@ Иван - Вы имели в виду, если массив пустой? Вы можете просто добавить безопасную проверку if (!arr.length) return; для этого в функции. См. Обновленный ответ на то же самое.

Nikhil Aggarwal 23.10.2018 15:05

Другие вопросы по теме