我将服务器发送的数据附加到表,显示选定/嵌套的对象属性。我在提供正确的多维度以获取正确的数据成员时遇到困难。
场景:我有一个json
对象,我需要在JavaScript中获取其属性。脚本键(例如,'student.course.name')任何长度长的成员访问层次结构。
输入: "student.course.name"
用作: someObject['student']['course']['name']
可能的输入键 :"age", "dept.name", "student.college.university.name" etc.
我已经尝试.split()
和for loop
,但没有一个符合所有可能的要求。请建议更改!
答案 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]]);
或无限深度版本:
var keys = key.split(".");
var value = someObject;
var n;
for (n = 0; n < keys.length; ++n) {
value = value[keys[n]];
}
console.log(value);
我们从value = someObject
开始,对于每个密钥,我们从value
获取相关属性并将其分配给value
。所以在第一遍时,value
成为student
对象;在第二遍,它是course
;在第三次也是最后一次传递中,它是name
的值。