10.03.2013, 20:24
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
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)
,
Последний раз редактировалось Deff, 10.03.2013 в 20:31.
|
|
10.03.2013, 20:45
|
Профессор
|
|
Регистрация: 13.12.2012
Сообщений: 283
|
|
А eval считается медленным?А через регу нельзя сделать?
Я закончил свой первый скрипт.Теперь оптимизирую,доделываю,подт ачиваю.
Спасибо огромное рони,danik.js и тебе огромное!!! .Вы очень помогли-без вас бы не сделал...
|
|
10.03.2013, 20:52
|
|
✔
|
|
Регистрация: 04.06.2012
Сообщений: 513
|
|
Сообщение от dima***
|
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) ;
__________________
★ ²º¹³ ☆
|
|
10.03.2013, 20:56
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
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) ;
|
|
10.03.2013, 21:02
|
|
✔
|
|
Регистрация: 04.06.2012
Сообщений: 513
|
|
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) ;
__________________
★ ²º¹³ ☆
|
|
10.03.2013, 21:06
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Hekumok, ☆
|
|
10.03.2013, 21:12
|
Профессор
|
|
Регистрация: 13.12.2012
Сообщений: 283
|
|
Смущает:
var m1 = ["щенок", "слон", "лиса", "волк"], m2 = ["веселый", "розовый", "хитрая", "серый"] ;
А если элементов в массиве-1000?
|
|
10.03.2013, 21:22
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
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);
Последний раз редактировалось Deff, 10.03.2013 в 21:24.
|
|
10.03.2013, 21:27
|
|
✔
|
|
Регистрация: 04.06.2012
Сообщений: 513
|
|
dima***, ну значит, будет цикл 1к раз проходить
__________________
★ ²º¹³ ☆
|
|
10.03.2013, 21:31
|
Профессор
|
|
Регистрация: 13.12.2012
Сообщений: 283
|
|
Deff и Hekumok-спасибо большое!
|
|
|
|