помогите со скриптом.
Как добавить "слону"-"розовый",а "щенку"-"весёлый",где их нет?
<script type="text/javascript"> arr=["щенок весёлый","слон ","щенок весёлый","слон розовый","щенок"]; reg=/(.+)(?:/s(.+))?/g; </script> |
Цитата:
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);
|
var arr=["щенок весёлый","слон","щенок весёлый","слон розовый","щенок"];
arr=arr.join(",").replace(/,щенок.*?(?=,|$)/g,',щенок весёлый').replace(/,слон.*?(?=,|$)/g,',слон розовый').split(',')
alert(arr)
|
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) ;
|
ksa,Deff,Hekumok-спасибо!
А если элементов в массиве очень много?Не только "щенок" и "слон". Как сделать универсальный шаблон? |
Цитата:
|
Так и не получается...:(
|
Цитата:
|
Цитата:
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) ;
|
Hekumok,ну да,так!!!Спасибо!
А,если с помощью "регулярки"? reg=/(.+)(?:/s(.+))?/g; Т.е. $1=m1,а $2=m2. |
var arr = ["поросёнок","щенок веселый", "щенок", "слон", "слон розовый", "лиса хитрая", "волк", "волк серый", "лиса"] ;
var arr2=(",start,"+arr.join(',')+",end,").split(/,[^\s]*,/);arr2.pop();arr2.splice(0,1);arr2=arr2.join(',').split(/\s+/).join(':');
eval("var obj = {'" +(arr2.split(/([:,])/).join("'"))+"'}");
for(var i=0;i<arr.length;i++){
if(obj[arr[i]])arr[i]+=' '+obj[arr[i]];
}
alert(arr)
, |
А eval считается медленным?А через регу нельзя сделать?
Я закончил свой первый скрипт.Теперь оптимизирую,доделываю,подт ачиваю. Спасибо огромное рони,danik.js и тебе огромное!!!:thanks: .Вы очень помогли-без вас бы не сделал... |
Цитата:
var arr = ["щенок веселый", "щенок ", "слон", "слон розовый", "лиса хитрая", "волк ", "волк серый", "лиса"] ;
var m1 = ["щенок", "слон", "лиса", "волк"], m2 = ["веселый", "розовый", "хитрая", "серый"] ;
for(var i=0, l=arr.length; i<l; i++) {
arr[i] = arr[i].replace(/^\S+ ?$/, function(a) {
for(var j=0, len=m1.length; j<len; j++) {
if(a==m1[j]||a==m1[j]+" ")
return m1[j]+" "+m2[j] ;
} ;
}) ;
} ;
alert(arr) ;
|
Hekumok,
var arr = ["поросёнок","щенок веселый", "щенок ", "слон", "слон розовый", "лиса хитрая", "волк ", "волк серый", "лиса"] ;
var m1 = ["щенок", "слон", "лиса", "волк"], m2 = ["веселый", "розовый", "хитрая", "серый"] ;
for(var i=0, l=arr.length; i<l; i++) {
arr[i] = arr[i].replace(/^\S+ ?$/, function(a) {
for(var j=0, len=m1.length; j<len; j++) {
if(a==m1[j]||a==m1[j]+" ")
return m1[j]+" "+m2[j] ;
} ;
}) ;
} ;
alert(arr) ;
|
Deff,
var arr = ["поросёнок","щенок веселый", "щенок ", "слон", "слон розовый", "лиса хитрая", "волк ", "волк серый", "лиса"] ;
var m1 = ["щенок", "слон", "лиса", "волк"], m2 = ["веселый", "розовый", "хитрая", "серый"] ;
for(var i=0, l=arr.length; i<l; i++) {
arr[i] = arr[i].replace(/^\S+ ?$/, function(a) {
for(var j=0, len=m1.length; j<len; j++) {
if(a==m1[j]||a==m1[j]+" ")
return m1[j]+" "+m2[j] ;
} ;
return a ;
}) ;
} ;
alert(arr) ;
|
Hekumok, ☆
|
Смущает:
var m1 = ["щенок", "слон", "лиса", "волк"], m2 = ["веселый", "розовый", "хитрая", "серый"] ; А если элементов в массиве-1000? |
dima***, Вытащил m1 - m2, ток во входной убрал лишние пробелы (Хотя m1m2 - информативней
var arr = ["поросёнок","щенок веселый", "щенок", "слон", "слон розовый", "лиса хитрая", "волк", "волк серый", "лиса"] ;
var m1m2 =(",start,"+arr.join(',')+",end,").split(/,[^\s]*,/);
m1m2.pop();m1m2.splice(0,1);
var m1=m1m2.join(',').split(/\s.*?,/);
var m2=m1m2.join(',').split(/(?:^|,).*?\s/);m2.splice(0,1);
alert(m1);
alert(m2);
|
dima***, ну значит, будет цикл 1к раз проходить
|
Deff и Hekumok-спасибо большое!
|
dima***,
Вариант ...
var arr = "щенок веселый,щенок,слон,слон розовый,лиса хитрая,волк,волк серый,лиса,щенок",
m = (arr.match(/[^,]+\s[^,]+/g)||[]).join(" ").split(" "), i = 0;
for ( ; i < m.length; i += 2)
var reg = RegExp("(,|^)" + m[i] + "(,|$)", "g"),
arr = arr.replace(reg, "$1" + m[i] + " " + m[i + 1] + "$2");
alert(arr.split(",").join("\n"));
|
| Часовой пояс GMT +3, время: 02:29. |