引用另一个对象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: {} };

我希望能够引用附近房屋内的房屋对象。但将它们过滤到各自的邻居。即房子["01"]应该在邻居["00001"]中(那些具有匹配房子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]]} 
];

在这样的结构中,每个房屋对象只有一个副本。您可以通过您拥有的任何引用对其进行修改。因此,您可以通过主房屋阵列对其进行修改。或者,您可以通过附近的房屋阵列对其进行修改。每个都指向完全相同的房屋对象。因此,当你在一个地方修改它时,你就是在修改实际的房子对象,所有引用该特定房子对象的人都会看到这些修改。


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

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"]] };

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

最新更新