21.03.2013, 10:54
|
Кандидат Javascript-наук
|
|
Регистрация: 23.02.2013
Сообщений: 127
|
|
Поиск в массиве, частичное совпадение
Подскажите пожалуйста, как проверить есть ли элемент в массиве, используя в поиске часть его имени? Например, есть массив
var massiv = ["яблочный пирог", "соус_острый", "яблоки_красные"]
как проверить, есть ли в массиве элемент с частичным совпадением "яблок", и получить его номер в массиве?
|
|
21.03.2013, 11:07
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
Сообщение от фонарик
|
как проверить, есть ли в массиве элемент с частичным совпадением "яблок", и получить его номер в массиве?
|
написать регулярку для частичного совпадения. пройтись по массиву (пребором в цикле, форичем- неважно) в случае совпадения , вернуть, запомнить индекс
|
|
21.03.2013, 11:08
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
фонарик,
а если элементов совпавших не 1 который выдавать?
|
|
21.03.2013, 11:14
|
Кандидат Javascript-наук
|
|
Регистрация: 23.02.2013
Сообщений: 127
|
|
Сообщение от рони
|
а если элементов совпавших не 1 который выдавать?
|
Совпадений больше 1 быть не может.
Пытался найти в гугле что-то на эту тему, но кроме обычного поиска по массиву, ничего не нашел. Регулярные выражения никак не даются в понимании, да и ранее подобной задачи никогда не встречал
|
|
21.03.2013, 11:17
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
Сообщение от фонарик
|
Пытался найти в гугле что-то на эту тему, но кроме обычного поиска по массиву, ничего не нашел. Регулярные выражения никак не даются в понимании, да и ранее подобной задачи никогда не встречал
|
можно ещё так : http://ru.wikipedia.org/wiki/%D0%A0%...B9%D0%BD%D0%B0
а в рнр вообще есть функция для вычисления расстояния
Последний раз редактировалось dmitriymar, 21.03.2013 в 11:19.
|
|
21.03.2013, 11:47
|
|
Профессор
|
|
Регистрация: 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, "яблок" ) );
|
|
21.03.2013, 11:54
|
Кандидат Javascript-наук
|
|
Регистрация: 23.02.2013
Сообщений: 127
|
|
Мсье rgl, спасибо вам за решение, надеюсь я все-таки смогу понять как оно работает. Да и регулярных выражений вроде как и нет
|
|
21.03.2013, 13:07
|
х.з
|
|
Регистрация: 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.
|
|
21.03.2013, 13:26
|
|
Профессор
|
|
Регистрация: 28.02.2011
Сообщений: 349
|
|
dmitriymar,
Из вопроса, а также из приведенного примера можно предположить, что под частичным совпадением понимается вхождение:
Сообщение от фонарик
|
Подскажите пожалуйста, как проверить есть ли элемент в массиве, используя в поиске часть его имени?
|
Если же понимать по-вашему, то надо сначала определиться сколько букв должно совпадать, чтобы это уже считалось частичным совпадением. Одной достаточно?
Я понял вопрос именно так (вхождение), единственное, в чем сомневался, так это искать везде или строго в начале. Если нужно строго вначале, то проверку >= 0 можно заменить на == 0
Последний раз редактировалось rgl, 21.03.2013 в 13:37.
|
|
21.03.2013, 13:42
|
Кандидат Javascript-наук
|
|
Регистрация: 23.02.2013
Сообщений: 127
|
|
Частичное совпадение я обозначил весьма буквально - выражение в кавычках "яблок". Т.е нужно значение что в кавычках проверить нет ли точных совпадений в массиве, т.е елемента в котором есть все символы что в кавычках. Решение rgl то, что и хотелось в итоге получить
|
|
|
|