Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Объекты и их свойства (https://javascript.ru/forum/events/47656-obekty-i-ikh-svojjstva.html)

Sherminator 02.06.2014 14:37

Объекты и их свойства
 
Есть два объекта вида
[B]obj1[/B] = {}
obj1[11].id = 123;
obj1[11].lnkid = 111;
...
obj1[99].id = 321;
obj1[99].lnkid = 999;

и
[B]obj2[/B] = {}
obj2[111].id = 111;
obj2[111].type = permit;
...
obj2[999].id = 999;
obj2[999].type = deny;

Как я могу получить номер ключа объекта obj1 или объект вида obj1[i], если мне необходимо сделать такую операцию

* сравнить значение свойства obj2[i].type (например с permit)
* условие совпало, получаю id текущего объекта (это obj2[i].id равное 111)
* а вот теперь мне нужно найти свойство объекта obj1 cо значением равному obj2[i].id (это будет obj1[11].lnkid равное 111)
* дальше мне нужно получить сам объект obj1[11], чтоб я мог спокойно обратиться к его любому свойству и методу.

Прошу извинить за столь закрученный вопрос, описал как смог :)

рони 02.06.2014 16:55

Sherminator,
мысли вслух
obj1 = {}
obj1[11] = {};
obj1[11].id = 123;
obj1[11].lnkid = 111;
obj1[99] = {};
obj1[99].id = 321;
obj1[99].lnkid = 999;

obj2 = {};
obj2[111] = {};
obj2[111].id = 111;
obj2[111].type = 'permit';
obj2[999] = {};
obj2[999].id = 999;
obj2[999].type = 'deny';

function get_k(obj, str, type)
{  var i;
   type && (i = type)
   for(var k in obj) {
     el = obj[k];
    for(i in el) if (el[i] == str) return k ;
   }
   return false
}
var indx_obj2 = get_k(obj2, 'permit')
//var indx_obj2 = get_k(obj2, 'permit', 'type')
var id = obj2[indx_obj2].id;
var indx_obj1 = get_k(obj1, id)
alert(indx_obj1)
alert(JSON.stringify(obj1[indx_obj1]))


Часовой пояс GMT +3, время: 06:00.