徐向博 / Imin.

js 使用字符串获取属性值 o['a.b.c']
作者:Imin 时间:2022-10-12 分类: 前端

项目中遇到了一个需求,通过字符串获取对象的属性值,如: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