Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.03.2013, 10:54
Кандидат Javascript-наук
Отправить личное сообщение для фонарик Посмотреть профиль Найти все сообщения от фонарик
 
Регистрация: 23.02.2013
Сообщений: 127

Поиск в массиве, частичное совпадение
Подскажите пожалуйста, как проверить есть ли элемент в массиве, используя в поиске часть его имени? Например, есть массив
var massiv = ["яблочный пирог", "соус_острый", "яблоки_красные"]
как проверить, есть ли в массиве элемент с частичным совпадением "яблок", и получить его номер в массиве?
Ответить с цитированием
  #2 (permalink)  
Старый 21.03.2013, 11:07
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от фонарик
как проверить, есть ли в массиве элемент с частичным совпадением "яблок", и получить его номер в массиве?
написать регулярку для частичного совпадения. пройтись по массиву (пребором в цикле, форичем- неважно) в случае совпадения , вернуть, запомнить индекс
Ответить с цитированием
  #3 (permalink)  
Старый 21.03.2013, 11:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

фонарик,
а если элементов совпавших не 1 который выдавать?
Ответить с цитированием
  #4 (permalink)  
Старый 21.03.2013, 11:14
Кандидат Javascript-наук
Отправить личное сообщение для фонарик Посмотреть профиль Найти все сообщения от фонарик
 
Регистрация: 23.02.2013
Сообщений: 127

Сообщение от рони Посмотреть сообщение
а если элементов совпавших не 1 который выдавать?
Совпадений больше 1 быть не может.

Пытался найти в гугле что-то на эту тему, но кроме обычного поиска по массиву, ничего не нашел. Регулярные выражения никак не даются в понимании, да и ранее подобной задачи никогда не встречал
Ответить с цитированием
  #5 (permalink)  
Старый 21.03.2013, 11:17
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от фонарик
Пытался найти в гугле что-то на эту тему, но кроме обычного поиска по массиву, ничего не нашел. Регулярные выражения никак не даются в понимании, да и ранее подобной задачи никогда не встречал
можно ещё так : http://ru.wikipedia.org/wiki/%D0%A0%...B9%D0%BD%D0%B0
а в рнр вообще есть функция для вычисления расстояния

Последний раз редактировалось dmitriymar, 21.03.2013 в 11:19.
Ответить с цитированием
  #6 (permalink)  
Старый 21.03.2013, 11:47
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

var massiv = ["яблочный пирог", "соус_острый", "яблоки_красные"];

function findPartial( a, s )
{
  for( var i = 0; i < a.length; ++i )
    if( a[i].indexOf( s ) >= 0 )
      return i;
  return -1;
}

alert( findPartial( massiv, "яблок" ) );
Ответить с цитированием
  #7 (permalink)  
Старый 21.03.2013, 11:54
Кандидат Javascript-наук
Отправить личное сообщение для фонарик Посмотреть профиль Найти все сообщения от фонарик
 
Регистрация: 23.02.2013
Сообщений: 127

Мсье rgl, спасибо вам за решение, надеюсь я все-таки смогу понять как оно работает. Да и регулярных выражений вроде как и нет
Ответить с цитированием
  #8 (permalink)  
Старый 21.03.2013, 13:07
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

var massiv = ["яблочный пирог", "соус_острый", "яблоки_красные"];
 
function findPartial( a, s )
{
  for( var i = 0; i < a.length; ++i )
    if( a[i].indexOf( s ) >= 0 )
      return i;
  return -1;
}
 
alert( findPartial( massiv, "яблокo" ) );

Сообщение от фонарик
как проверить, есть ли в массиве элемент с частичным совпадением "яблок", и получить его номер в массиве?
rgl, Ну и ? Почему не выводит элемент с частичным совпадением?

Последний раз редактировалось dmitriymar, 21.03.2013 в 13:10.
Ответить с цитированием
  #9 (permalink)  
Старый 21.03.2013, 13:26
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

dmitriymar,
Из вопроса, а также из приведенного примера можно предположить, что под частичным совпадением понимается вхождение:
Сообщение от фонарик Посмотреть сообщение
Подскажите пожалуйста, как проверить есть ли элемент в массиве, используя в поиске часть его имени?
Если же понимать по-вашему, то надо сначала определиться сколько букв должно совпадать, чтобы это уже считалось частичным совпадением. Одной достаточно?

Я понял вопрос именно так (вхождение), единственное, в чем сомневался, так это искать везде или строго в начале. Если нужно строго вначале, то проверку >= 0 можно заменить на == 0

Последний раз редактировалось rgl, 21.03.2013 в 13:37.
Ответить с цитированием
  #10 (permalink)  
Старый 21.03.2013, 13:42
Кандидат Javascript-наук
Отправить личное сообщение для фонарик Посмотреть профиль Найти все сообщения от фонарик
 
Регистрация: 23.02.2013
Сообщений: 127

Частичное совпадение я обозначил весьма буквально - выражение в кавычках "яблок". Т.е нужно значение что в кавычках проверить нет ли точных совпадений в массиве, т.е елемента в котором есть все символы что в кавычках. Решение rgl то, что и хотелось в итоге получить
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск HTMLElement'а в массиве z700i Общие вопросы Javascript 15 07.01.2012 21:13
Поиск в тексте javascript jQuery 3 31.05.2011 11:40
Поиск вхождения подстроки в массиве строк. FINoM Общие вопросы Javascript 8 27.02.2011 11:53
Поиск в двумерном массиве Vamp Общие вопросы Javascript 2 16.07.2009 13:05
Поиск в массиве через JavaScript Noran Общие вопросы Javascript 0 10.08.2008 17:31