21.03.2013, 14:08
|
|
Профессор
|
|
Регистрация: 28.02.2011
Сообщений: 349
|
|
Сообщение от dmitriymar
|
тоже такой момент, и почемуто мне кажется что искомое вхождение всё таки больше похоже на 1 или 3 элемент поискового подмножества
|
Кста, ТС уточнил, что ситуация, когда больше одного совпадения, невозможна, либо есть ровно одно совпадение, либо нет ни одного. А значит нет смысла сравнивать, какое совпадение больше похоже, а какое меньше. Более сложная задача требует более сложного решения, а вычисление степени совпадения (или как там его, расстояния) - задача не для JavaScript, средства языка не позволяют эффективно, т.е. на таком языке, как напр. С решение будет работать на порядок, если не на два, быстрее.
|
|
21.03.2013, 14:10
|
|
Профессор
|
|
Регистрация: 28.02.2011
Сообщений: 349
|
|
Сообщение от рони
|
а как без них?
|
String.indexOf, String.lastIndexOf
Сообщение от рони
|
в каком месте? поиск прекратится на самом большом совпадении
|
Да, не обратил внимания сразу.
Последний раз редактировалось rgl, 21.03.2013 в 14:13.
|
|
21.03.2013, 14:11
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Сообщение от dmitriymar
|
поправил тест . Сможете обосновать почему соус более релевантен чем яблоко?) яблоко ведь стоит в начале слова , и вполне логично , что более подходящий вариант связан с яблоком для стран с письменностью слева направо
|
ничего не понял - где чего поправлено ... какой соус ...
|
|
03.04.2013, 20:16
|
Кандидат Javascript-наук
|
|
Регистрация: 23.02.2013
Сообщений: 127
|
|
Сообщение от rgl
|
var massiv = ["яблочный пирог","соус_острый_1","яблоки_красные","соус_острый_8"];
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, "соус_острый" ) );
|
Я реализовал в своей задаче скрипт что выше, который написал мсье rgl. Он прекрасно работает для нужного мне поиска. Подскажите пожалуйста, как изменить данный скрипт так, чтобы в итоге в алерте увидеть все номера индексов найденных совпадений? Т.е в данном случае, необходимо получить индексы [1] и [3].
|
|
03.04.2013, 22:24
|
Кандидат Javascript-наук
|
|
Регистрация: 23.02.2013
Сообщений: 127
|
|
var massiv = ["яблочный пирог","соус_острый_1","яблоки_красные","соус_острый_8"];
function findPartial(a, s)
{
var zz = []
for( var i = 0; i < a.length; ++i )
if( a[i].indexOf(s) >= 0 )
zz.push(i)
return zz
return -1;
}
alert( findPartial( massiv, "соус_острый" ) )
Вроде работает ))
|
|
04.04.2013, 07:43
|
|
Профессор
|
|
Регистрация: 28.02.2011
Сообщений: 349
|
|
Сообщение от фонарик
|
var massiv = ["яблочный пирог","соус_острый_1","яблоки_красные","соус_острый_8"];
function findPartial(a, s)
{
var zz = []
for( var i = 0; i < a.length; ++i )
if( a[i].indexOf(s) >= 0 )
zz.push(i)
return zz
return -1;
}
alert( findPartial( massiv, "соус_острый" ) )
Вроде работает ))
|
В какой-то из умных книжек (не помню в какой) написано что-то вроде "есть только одна вещь хуже отсутствия отступов - неправильные отступы"
var massiv = ["яблочный пирог","соус_острый_1","яблоки_красные","соус_острый_8"];
function findPartial(a, s)
{
var zz = []
for( var i = 0; i < a.length; ++i )
if( a[i].indexOf(s) >= 0 )
zz.push(i)
return zz // тут отсутп был неправильный, ибо выполняется всегда, а не внутри if
// return -1; //а это вообще никогда не выполняется
}
alert( findPartial( massiv, "соус_острый" ) )
|
|
|
|