Поиск по словам
Есть массив строк, есть поле для поиска. Нужно определить есть ли в массиве следующая строка, которую мы впишем в поле. Но есть условие: искать не целиком строку, а слова. Допустим, в массиве есть строка "привет мир". Нужно, чтобы поиск по строке "привет (много пробелов) мир" выдавал true.
|
Neo54213,
поиск и строку разбить на массив слов и тогда вхождение подмассива поиска в массив строки ...или все элементы поиска входят в строку. filter и every |
рони,
спасибо за ответ. Я немного попроще придумал: text = text.replace(/ {2,}/g, ' '); |
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)); |
Цитата:
|
Часовой пояс GMT +3, время: 16:45. |