Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Поиск по словам (https://javascript.ru/forum/misc/69851-poisk-po-slovam.html)

Neo54213 22.07.2017 17:15

Поиск по словам
 
Есть массив строк, есть поле для поиска. Нужно определить есть ли в массиве следующая строка, которую мы впишем в поле. Но есть условие: искать не целиком строку, а слова. Допустим, в массиве есть строка "привет мир". Нужно, чтобы поиск по строке "привет (много пробелов) мир" выдавал true.

рони 22.07.2017 17:54

Neo54213,
поиск и строку разбить на массив слов и тогда
вхождение подмассива поиска в массив строки ...или все элементы поиска входят в строку.
filter и every

Neo54213 22.07.2017 18:12

рони,
спасибо за ответ. Я немного попроще придумал: text = text.replace(/ {2,}/g, ' ');

рони 22.07.2017 18:12

Neo54213, без учёта регистра или убрать .toLowerCase()
function quest(str,arr)
{
  return arr.filter(function(el) {
  return str.split(/[-\.,\s!]+/).every(function(word) {
  return el.toLowerCase().split(/[-\.,\s!]+/).indexOf(word.toLowerCase()) !== -1
})
})

}
  var arr = ["В голове моей опилки", "Да, да, да. Но хотя там и опилки", "Но кричалки и вопилки, Но кричалки и вопилки", "А также: Шумелки, пыхтелки и сопелки","Сочинию я неплохо иногда."]

alert(quest("в голове опилки",arr));
alert(quest("опилки",arr));

рони 22.07.2017 18:14

Цитата:

Сообщение от Neo54213
Я немного попроще придумал

ок если строки отличаются только пробелами


Часовой пояс GMT +3, время: 16:45.