嗨,我正在尝试制作自己的Pokédex网站,但是Sinds我擅长数据库,SQL,PHP等,我正在以JavaScript,JSON样式进行此操作。在这样做的过程中,我遇到了一个问题:我想将gen1.gps.Route_1.Exits.South
引用到gen1.gps.Pallet_Town.Title
,但我不知道如何。当然,我首先搜索了互联网,以找到解决方案,但在上下文中我不了解它。
var gen1 = {
'gps': {
'Route_1': {
'Title': 'Route 1',
'Exits': {
'North': 0,
'South': // pallet town link here
},
},
'Pallet_Town': {
'Title': 'Pallet Town',
'Exits': {
'North': /* route 1 here */,
'South': 0
}
}
}
}
我希望能够调用gen1.gps.Route_1.Exits.South
对象获得gen1.gps.Pallet_Town
的Title
对象。我还没有调试任何东西,所以我不知道我的错误是什么。
我希望有人可以通过发布有用的答案来帮助我。
需要实现某种ID系统。MySQL为您照顾这一点,但就像您说的那样,您不想学习新语言只是为了看到一些东西。
我在路由上添加了ID,然后编写了一个函数以通过其ID找到路由。代码的底部(Object.size()
)是获取gps
对象中的路由总数。(与array.length
相同)
var gen1 = {
'gps': {
'Route_1': {
'Id': 1,
'Title': 'Route 1',
'Exits': {
'North': 0,
'South': 2
},
},
'Pallet_Town': {
'Id': 2,
'Title': 'Pallet Town',
'Exits': {
'North': 1,
'South': 0
}
}
}
};
function getRoute (id)
{
for (var i = 0; i < gen1.gps.size(); i++)
{
if (gen1.gps[i].id == id)
return gen1.gps[i];
}
return false;
}
Object.size = function (obj)
{
var size = 0, key;
for (key in obj)
if (obj.hasOwnProperty (key)) size++;
return size;
};
如果您动态创建对象,则可以节省很多工作:
var gen1 = {
gps: {}
};
function checkPlace(a) {
if (!gen1.gps[a]) gen1.gps[a] = {};
if (!gen1.gps[a].Title) gen1.gps[a].Title = a.split("_").join(" ");
if (!gen1.gps[a].Exits) gen1.gps[a].Exits = {};
}
function connect(a, b, dir) {
checkPlace(a);
checkPlace(b);
if (dir == "ns") {
gen1.gps[a].Exits.South = gen1.gps[b];
gen1.gps[b].Exits.North = gen1.gps[a];
}
if (dir == "we") {
gen1.gps[a].Exits.East = gen1.gps[b];
gen1.gps[b].Exits.West = gen1.gps[a];
}
}
connect("Route_1", "Pallet_Town", "ns");
console.log(gen1.gps.Route_1.Exits.South.Title);
console.log(gen1.gps);