在另一个对象中引用对象 javascript

referencing object inside another object javascript

所以我有两组不同的对象:

var house = {};
house["01"] = {hID: "01", neighbh: "00001", name: "house 1"};
house["02"] = {hID: "02", neighbh: "00001", name: "house 2"};
house["03"] = {hID: "03", neighbh: "00002", name: "house 3"};
house["04"] = {hID: "04", neighbh: "00003", name: "house 4"};

var neighborhood = {};
neighborhood["00001"] = {id: "00001", name: "first neighborhood", houses: {} };
neighborhood["00002"] = {id: "00002", name: "second neighborhood", houses: {} };
neighborhood["00003"] = {id: "00003", name: "third neighborhood", houses: {} };

我希望能够引用附近房屋 {} 内的房屋对象。但是将它们过滤到各自的邻居。即 house["01"] 应该在 neighborhood["00001"] 中(那些具有与 house neighbh 匹配的邻居 ID 的)。这样一来,我可以将所有房屋都放在一个不同的对象中,但仍然可以通过邻里对象对它们进行更改。希望我已经设法让自己清楚。

如有任何帮助,我们将不胜感激。谢谢

Javascript 中的对象通过引用传递和存储。所以,假设您有一个包含所有房屋的主数组:

var houses = [
    {hID: "01", neighbh: "00001", name: "house 1"},
    {hID: "02", neighbh: "00001", name: "house 2"}
];

然后,您有一个邻域对象数组,每个对象都有一些关于邻域的识别信息,然后是该邻域中的房屋列表:

var neighborhoods = [
    {id: "00001", name: "first neighborhood", houses: [houses[0], houses[1]]} 
];

在这样的结构中,每个房屋对象只有一个副本。您可以通过您拥有的任何参考对其进行修改。因此,您可以通过 master houses 数组修改它。或者,您可以通过社区内的房屋数组对其进行修改。每个都指向完全相同的房屋对象。因此,当您在一个地方修改它时,您正在修改实际的房屋对象,并且引用该特定房屋对象的每个人都会看到这些修改。


因此,在您设置的结构中(它使用对象作为容器,而不是我用来容纳多个项目的数组)。我认为您可以像这样填写并完成您的要求:

var house = {};
house["01"] = {hID: "01", neighbh: "00001", name: "house 1"};
house["02"] = {hID: "02", neighbh: "00001", name: "house 2"};
house["03"] = {hID: "03", neighbh: "00002", name: "house 3"};
house["04"] = {hID: "04", neighbh: "00003", name: "house 4"};

var neighborhood = {};
neighborhood["00001"] = {id: "00001", name: "first neighborhood", houses: [house["01"], house["02"]]};
neighborhood["00002"] = {id: "00002", name: "second neighborhood", houses: [house["03"]] };
neighborhood["00003"] = {id: "00003", name: "third neighborhood", houses: [house["04"]] };

仅供参考,社区中的房屋列表似乎应该是一个数组,而不是一个对象。