Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.03.2013, 11:25
Профессор
Отправить личное сообщение для dima*** Посмотреть профиль Найти все сообщения от dima***
 
Регистрация: 13.12.2012
Сообщений: 283

помогите со скриптом.
Как добавить "слону"-"розовый",а "щенку"-"весёлый",где их нет?

<script type="text/javascript"> 
arr=["щенок весёлый","слон ","щенок весёлый","слон розовый","щенок"];
reg=/(.+)(?:/s(.+))?/g;

</script>
Ответить с цитированием
  #2 (permalink)  
Старый 10.03.2013, 13:05
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от dima***
Как добавить "слону"-"розовый",а "щенку"-"весёлый",где их нет?
Как вариант...

var a=["щенок весёлый","слон ","щенок весёлый","слон розовый","щенок"];
var i;
for (i=0; i<a.length; i++) {
	a[i]=a[i].replace(/(слон|слон\s)$/gi,'$1 розовый')
	a[i]=a[i].replace(/(щенок|щенок\s)$/gi,'$1 весёлый')
};
alert(a);
Ответить с цитированием
  #3 (permalink)  
Старый 10.03.2013, 13:13
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

var arr=["щенок весёлый","слон","щенок весёлый","слон розовый","щенок"];
arr=arr.join(",").replace(/,щенок.*?(?=,|$)/g,',щенок весёлый').replace(/,слон.*?(?=,|$)/g,',слон розовый').split(',')
alert(arr)
Ответить с цитированием
  #4 (permalink)  
Старый 10.03.2013, 13:20
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

var arr = ["щенок весёлый", "слон ", "щенок весёлый", "слон розовый", "щенок"] ;
var reg = /^(слон|щенок) ?$/g ;
for(var i=0; i<arr.length; i++) arr[i] = arr[i].replace(reg, function(a, b) {
return b + " " + ((b=="слон") ? "розовый" : "веселый") ;
}) ;
alert(arr) ;
__________________
★ ²º¹³ ☆
Ответить с цитированием
  #5 (permalink)  
Старый 10.03.2013, 13:27
Профессор
Отправить личное сообщение для dima*** Посмотреть профиль Найти все сообщения от dima***
 
Регистрация: 13.12.2012
Сообщений: 283

ksa,Deff,Hekumok-спасибо!
А если элементов в массиве очень много?Не только "щенок" и "слон".
Как сделать универсальный шаблон?

Последний раз редактировалось dima***, 10.03.2013 в 13:30.
Ответить с цитированием
  #6 (permalink)  
Старый 10.03.2013, 13:43
Аватар для Akalenik
Интересующийся
Отправить личное сообщение для Akalenik Посмотреть профиль Найти все сообщения от Akalenik
 
Регистрация: 05.03.2013
Сообщений: 20

Сообщение от dima*** Посмотреть сообщение
ksa,Deff,Hekumok-спасибо!
А если элементов в массиве очень много?Не только "щенок" и "слон".
Как сделать универсальный шаблон?
логично будет вместо "щенка" и "слона" поставить переменные и не заморачиваться
Ответить с цитированием
  #7 (permalink)  
Старый 10.03.2013, 18:37
Профессор
Отправить личное сообщение для dima*** Посмотреть профиль Найти все сообщения от dima***
 
Регистрация: 13.12.2012
Сообщений: 283

Так и не получается...
Ответить с цитированием
  #8 (permalink)  
Старый 10.03.2013, 18:42
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от dima***
ksa,Deff,Hekumok-спасибо!
А если элементов в массиве очень много?Не только "щенок" и "слон".
Как сделать универсальный шаблон?
Пример в студию ?, и потом, зачем в реале дублировать - удобнее исключать более короткие двухсловные?
Ответить с цитированием
  #9 (permalink)  
Старый 10.03.2013, 19:20
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

Сообщение от dima***
А если элементов в массиве очень много?Не только "щенок" и "слон".
Как сделать универсальный шаблон?
Например, так
var arr = ["щенок веселый", "щенок ", "слон", "слон розовый", "лиса хитрая", "волк ", "волк серый", "лиса"] ;
var m1 = ["щенок", "слон", "лиса", "волк"], m2 = ["веселый", "розовый", "хитрая", "серый"] ;
for(var i=0, l=arr.length; i<l; i++) {
 for(var j=0, len=m1.length; j<len; j++) {
  if(arr[i]==m1[j]||arr[i]==m1[j]+" ") arr[i] = m1[j]+" "+m2[j] ;
 } ;
} ;
alert(arr) ;
__________________
★ ²º¹³ ☆
Ответить с цитированием
  #10 (permalink)  
Старый 10.03.2013, 20:08
Профессор
Отправить личное сообщение для dima*** Посмотреть профиль Найти все сообщения от dima***
 
Регистрация: 13.12.2012
Сообщений: 283

Hekumok,ну да,так!!!Спасибо!
А,если с помощью "регулярки"?
reg=/(.+)(?:/s(.+))?/g;

Т.е. $1=m1,а $2=m2.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПОМОГИТЕ разобраться со скриптом (картинка праздничного дня) Zhuk13@ya.ru Общие вопросы Javascript 7 08.12.2013 19:51
Помогите пожалуйста разобраться со скриптом Shalty Opera, Safari и др. 1 21.01.2013 16:41
помогите с скриптом для кнопки Павел Прокопенко Общие вопросы Javascript 4 01.04.2012 14:15
помогите с скриптом $12ANDRE12$ Firefox/Mozilla 2 12.05.2009 21:46
Помогите со скриптом Pilageen Общие вопросы Javascript 5 13.04.2009 14:13