слияние массива с вложенными массивами с еще одним с вложенными массивами
доброе время суток.
помогите плз чуть переделать ф-цию. Задача такая есть массивы: 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-ом, то он туда добавлялся... заранее спасибо! |
во первых-это не массивы
|
ну объекты...
все спасибо за помощь, в яваскрипте оказывается можно делать так: 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 } |
Часовой пояс GMT +3, время: 00:03. |