【发布时间】:2010-08-15 05:36:01
【问题描述】:
我很难让人们在这里对我需要什么做出结论,所以请在回答之前阅读并考虑一下。
情况如下:
你有一个传入的对象。你不知道这个对象的结构。但是,您确实对对象中的某些内容有“目标”。所以让我们假设存在myObject,并且您定义了某种目标,例如关联级别数组:
var objectTarget = [ 'firstLevel', 'secondLevel' ,'targetProperty' ];
现在传入的myObject 看起来像这样:
{
firstLevel: {
secondLevel: {
targetProperty: "The goods!"
}
}
}
但如前所述,您不知道结构。您只知道objectTarget 数组中的内容。
我的问题是能够仅基于目标来解决对象内的任意位置。如果我知道目标将总是三层深,那么我可以简单地像这样引用它:
myObject[objectTarget[1]][objectTarget[2]][objectTarget[3]];
但是,由于我无法确定关卡深度的数量,这还不够。我能够完成这项任务的唯一方法是选择最大数量的合理级别,然后打开它。像这样:
switch ( objectTarget.length) {
case 1:
var result = myObject[objectTarget[1]];
break;
case 2:
var result = myObject[objectTarget[1]][objectTarget[2]];
break;
case 3:
var result = myObject[objectTarget[1]][objectTarget[2]][objectTarget[3]];
break;
case 4:
var result = myObject[objectTarget[1]][objectTarget[2]][objectTarget[3]][objectTarget[1]];
break;
}
..等
这显然是非常混乱的,并不是最优解。
这是否正确解释了我的问题?是否有更清洁的方式来完成此操作?
提前感谢您提供的任何建议。
【问题讨论】:
标签: javascript object