js 使用字符串获取属性值 o['a.b.c']
项目中遇到了一个需求,通过字符串获取对象的属性值,如:o['a.b.c']
记录一下实现过程。
字符串分隔成数组并遍历,一层一层往下撸 object 的属性,数组遍历完成时,object 剩余的数据就是结果。
方法如下:
// 多层属性查源
findAttr (object, string){
let tags = string.split('.');
let tagsCopy = JSON.parse(JSON.stringify(tags));
tagsCopy.map(item => {
object = object[tags[0]];
tags.shift();
})
return object;
}
参数:
object:目标对象
string:查找的属性,使用 . 按层级拼接
调用:
let object = {
a: 1,
b: {
c: 2,
d: {
e: 3,
f: 4
}
}
}
findAttr(object, 'a') // 1
findAttr(object, 'b') // { c: 2, d: { e: 3, f: 4 } }
findAttr(object, 'b.c') // 2
findAttr(object, 'b.d') // { e: 3, f: 4 }
findAttr(object, 'b.d.e') // 3
以上这种方式理论上可以无限层级获取,灰常滴奈斯,如果哪位大佬有更好的实现方法,欢迎留言分享,共同学习,共同进步!
本文标签: js