使用变量构建对象路径

时间:2014-05-26 09:29:52

标签: javascript jquery arrays javascript-objects

var area = "residenceArea1";
var type = "residenceType1";
var year = "constructionYear1";
var obj = {
    "residenceType1": [
        {
            "constructionYear1": [
                {
                    "residenceArea1": 103,
                    "residenceArea2": 82
                }
            ]
        },
        {
            "constructionYear2": [
                {
                    "residenceArea1": 62
                }
            ]
        }
    ],
    "residenceType2": [
        {
            "constructionYear1": [
                {
                    "residenceArea1": 83
                }
            ]
        }
    ]
};

console.log(object.residenceType1[0].constructionYear1[0].residenceArea1) //103

这个对象更长,但我已经缩短了这个问题。有没有办法让我的3个变量设置对象路径?像这样的东西:

console.log(object.type[0].year[0].area)

变量根据用户选择的单选按钮而变化,这就是我想用变量设置路径的原因。此对象也可以变得更容易,因此我们不需要为数组指定[0]吗?

2 个答案:

答案 0 :(得分:1)

我认为你要求的是这样的:

obj[type][0][year][0][area]

方括号表示法允许在对象的键查找中使用任意表达式。 请注意,在查找期间,密钥将始终转换为字符串。

以下是等效的:

var type = 'residenceType1';

obj.residenceType1            // dot-notation
obj['residenceType1']         // square-bracket notation with string expression
obj[type]                     // square-bracket notation with variable expression

答案 1 :(得分:0)

唯一的解决方案是通过传递的命名属性[]进行访问:

console.log(object[type][0][year][0][area]);