假设函数foo
包含2个参数:
obj
是一个对象
arr
是一个字符串数组
arr
的成员是obj
中的属性名称,例如
如果obj[arr[0]][arr[1]]
至少有2个成员,则arr
会有一个值
如何获取obj
arr
指向的属性值?
注意: obj
已输入,旧学校迭代会抛出错误。
示例:
obj
可能是
{
pro1: 'a',
prop2: {
prop21: 'b',
prop22: ['c', 'd']
}
}
和arr
可能是
['prop2', 'prop21']
我没有关于obj
和arr
的任何信息,我只知道
obj['prop2']['prop21']
当然有一个值,这个短语不会抛出这个错误:
无法读取未定义的属性prop21
答案 0 :(得分:0)
如果我理解你的话:
let obj = {
pro1: "a",
prop2: {
prop21: "b",
prop22: ["c", "d"]
}
};
function getValue(obj: any, keys: string[]): any {
let index = 0,
current: any = obj;
while (current[keys[index]]) {
current = current[keys[index++]];
}
return current;
}
console.log(getValue(obj, ["prop2", "prop21"])); // b
console.log(getValue(obj, ["prop2", "prop22"])); // ["c", "d"]