помогите со скриптом.
Как добавить "слону"-"розовый",а "щенку"-"весёлый",где их нет?
<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, время: 13:32. |