jQuery:将object [“student.course.name”]转换为object ['student'] ['course'] ['name']

时间:2014-01-21 10:20:16

标签: javascript jquery

我将服务器发送的数据附加到表,显示选定/嵌套的对象属性。我在提供正确的多维度以获取正确的数据成员时遇到困难。

场景:我有一个json对象,我需要在JavaScript中获取其属性。脚本键(例如,'student.course.name')任何长度长的成员访问层次结构。

    输入: "student.course.name"
    用作: someObject['student']['course']['name']
可能的输入键 "age", "dept.name", "student.college.university.name" etc.

我已经尝试.split()for loop,但没有一个符合所有可能的要求。请建议更改!

1 个答案:

答案 0 :(得分:4)

如果你真的有字符串"student.course.name并且你真的有一个具有名为student的属性的对象,该属性又有一个名为course的属性,该属性又具有属性称为name,例如:

var key = "student.course.name";
var someObject = {
    student: {
        course: {
            name: "the name"
        }
    }
};

然后这个有效:

var keys = key.split(".");
console.log(someObject[keys[0]][keys[1]][keys[2]]);

Live Example | Source

或无限深度版本:

var keys = key.split(".");
var value = someObject;
var n;
for (n = 0; n < keys.length; ++n) {
    value = value[keys[n]];
}
console.log(value);

Live Example | Source

我们从value = someObject开始,对于每个密钥,我们从value获取相关属性并将其分配给value。所以在第一遍时,value成为student对象;在第二遍,它是course;在第三次也是最后一次传递中,它是name的值。