Javascript:对象和属性

时间:2014-06-02 13:57:39

标签: javascript

我有两个对象

obj1 = {};
obj1[11].id = 123;
obj1[11].lnkid = 111;
...
obj1[99].id = 321;
obj1[99].lnkid = 999;

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

如果我需要执行以下步骤,如何获取对象 obj1 的ID属性或对象本身 obj1 [i]

  • 我需要比较属性值 obj2 [i] .type (例如:if( obj2 [i] .type ==' 许可证'){...})
  • 如果比较成功,我会得到当前对象的ID( obj2 [i] .id 等于 111
  • 现在我想找到并获得对象 obj1 ,其属性 lnkid 等于 obj2 [i] .id (obj1 [11] ] .lnkid == 111)。

在最后一步之后,我想了解这一点     var curr_obj = obj1 [11];     var curr_id = curr_obj.id;     //现在curr_id值必须为123

但我不知道如何在最后一步找到并获得对象 obj1

2 个答案:

答案 0 :(得分:0)

您可以浏览obj1对象并与obj2 id进行比较吗?

obj2ID = findedID;

var i = -1;
while (++i < obj1.length)
{
  if (obj1[i].lnkid == obj2ID)
  {
     // You get your Obj1
  }
}

那是你在找什么?

答案 1 :(得分:0)

obj[11].id = 123;就像在做:obj.<object stored in obj, accessed via key 11>.id = 123;。内部对象没有分配类型,因为没有发生初始化。除此之外,id和lnkid是对象属性。子对象通过索引访问 - 键值,例如11。

我注意到lnkid-obj2的子对象id等于obj1Index - 100,如果你遵循这个约定很容易找到它,做下面的把戏:

foundObj1 =  obj1[obj2[i].id - 100]; // This has O(1) complexity, very fast.

所以,如果你确实在obj1索引和obj2 id之间有一个约定,你可以将它用于你自己的利益。