11.10.2014, 23:21
|
Новичок на форуме
|
|
Регистрация: 07.10.2014
Сообщений: 5
|
|
Помогите с поиском в масиве
В общем есть код:
var text="Eugene Yevgen Oksai, Olesya, Yevgen";
myName="Yevgen";
hits=[];
for (i=0;i<=text.length;i++){
if (text[i]==='Y'){
for(j=i; j< (i+ myName.length);j++){
hits.push(""+text[j]+"")}}
}
if (hits!=0){
console.log(hits);}
else console.log("Your name wasn`t found");
который выводит:
["Y", "e", "v", "g", "e", "n", "Y", "e", "v", "g", "e", "n"]
нужно что б выводило:
[Yevgen, Yevgen] or [Yevgen Yevgen] or idialy: Yevgen, Yevgen
У кого нибудь есть идеи, подскажите плз
|
|
12.10.2014, 00:00
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
var text = "Eugene Yevgen Oksai, Olesya, Yevgen",
myName = "Yevgen",
hits = [];
for (i = 0; i < text.length; i++) {
if (text[i] === 'Y') {
var str = '';
for (j = i; j < (i + myName.length); j++) {
str += text[j]
};
hits.push(str)
}
}
if (hits.length) alert(hits);
|
|
12.10.2014, 00:22
|
Новичок на форуме
|
|
Регистрация: 07.10.2014
Сообщений: 5
|
|
В принципе просто, но я б сам не догадался, спасибо огромное!
|
|
12.10.2014, 01:05
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
честно не понятно логика ваших действий. Потому как результат можно и так получить
var text = "Eugene Yevgen Oksai, Olesya, Yevgen",
myName = /Yevgen/g;
alert(text.match(myName));
|
|
12.10.2014, 05:04
|
Новичок на форуме
|
|
Регистрация: 07.10.2014
Сообщений: 5
|
|
Сообщение от Poznakomlus
|
честно не понятно логика ваших действий. Потому как результат можно и так получить
var text = "Eugene Yevgen Oksai, Olesya, Yevgen",
myName = /Yevgen/g;
alert(text.match(myName));
|
та логика тут проста, я массивы учу, на codecademy попалась задачка ответа к которой я не знал...
Спасибо, за упрощенный код, у меня следующий вопрос, что это за присвоение такое:
myName = /Yevgen/g;
Или где о нем можно прочитать?
|
|
12.10.2014, 05:32
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Вот так
var legal_names = 'Eugene|Yevgen|Oksa|Olesya|Yevgen';
var reg = new RegExp('^(?:'+legal_names+')$');
var matched = 'Oksa'.match(reg);
console.log(matched); // Array['Oksa']
Disclaimer: не я придумал, я нашел и у себя применяю вместо поиска в массиве литералов. Для тех кто еще юзает массивы:
private static function is_input($name) {
return preg_match('/^(?:button|checkbox|color|date|datetime|datetime-local|email|file|hidden|image|month|number|password|radio|range|reset|search|submit|tel|text|time|url|week)$/',$name);
}
|
|
12.10.2014, 20:00
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
kostyanet, че у тя за функция такая is_input? Ты будешь до конца своих дней поддерживать ее и обновлять список типов по мере их появления?
__________________
В личку только с интересными предложениями
|
|
13.10.2014, 09:40
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Это у меня еще нет функции is_bool_attr, там на полстраницы атрибутов которые отвечают шаблону "без валуе".
На самом деле не так. Это же не опенсорц, чтобы кто хочет тот писал что угодно. Тут кто хочет тот пишет что можно. Сегодня я добавил туда тип captcha.
ПОтому что инпуты бывают void, а бывают не пустые. ЧТобы унифицировать тип инпута, чтобы равнозначно писать и
->type('text')
и
->type('textarea')
и
->type('select')
пришлось собрать все типы инпутов в кучу (это уже все собрано, не волнуйтесь) и определять реверсом что инпут, а что не пустой.
|
|
13.10.2014, 09:43
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Кстати, а какого члена ФФ рисует в своем инспекторе элементов инпуты вот так
<input type="text"></input>
Я потратил 10 минут в поисках бага в скрипте, пока допер посмотреть хтмл-сам. Там все было правильно, как w3c.org завещал.
|
|
|
|