Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.02.2012, 00:41
Аспирант
Отправить личное сообщение для syegorius Посмотреть профиль Найти все сообщения от syegorius
 
Регистрация: 28.08.2010
Сообщений: 91

слияние массива с вложенными массивами с еще одним с вложенными массивами
доброе время суток.

помогите плз чуть переделать ф-цию. Задача такая есть массивы:

var o={user:{1:{info:'hello',pages:{1:'1',2:'2'}}}},
      z={user:{1:{pages:{3:'1',4:'2'}}}};


и их нада слить, но если делать это так m=$.extend(o,z) то m будет равно z, а необходимо что бы получился m таким:

m={user:{1:{info:'hello',pages:{1:'1',2:'2',3:'1',4:'2'}}}}


написал функцию - но то ли у меня в голове че-та замкнуло, то ли это не по моему уму додумать ее до конца. Вот то что щас есть:

function myExtend(a1,a2){
    for(var i in a2){
        if(typeof a1[i]=='undefined')a1[i]=a2[i]
        else for(var j in a2[i]){
            if(typeof a1[i][j]=='undefined')a1[i][j]=a2[i][j]
            else for(var k in a2[i][j]){
                ....
            }
        }
    }
    return a1
}


дело в том что вложенных массивов может быть n-ое количество и с n-ым уровнем вложенности (т.е. arr={1:{2:{...{n:{}}}}}). подскажите как мне переделать функцию что б она находила n-ый вложеный массив в a2 и если такового нет в a1 в n-1-ом, то он туда добавлялся...

заранее спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 15.02.2012, 00:58
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

во первых-это не массивы
Ответить с цитированием
  #3 (permalink)  
Старый 15.02.2012, 01:15
Аспирант
Отправить личное сообщение для syegorius Посмотреть профиль Найти все сообщения от syegorius
 
Регистрация: 28.08.2010
Сообщений: 91

ну объекты...
все спасибо за помощь, в яваскрипте оказывается можно делать так:

function myExtend(a1,a2){
    if(typeof a2=='object')for(var i in a2){
        if(!CAE(a1,i))a1[i]=a2[i]
        else a1[i]=myExtend(a1[i],a2[i])
    }
    return a1
}
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37