动态获取深层次的对象的属性值

对象

  • let obj = {
        user: {
            name: "zhang",
            age: 20,
            school: {
                name: "清华",
                class: 3,
                grader: 1
            }
        }
    }
    
  • 例:获取 obj.user.school.name

    1. 首先使用 split,转为数组
    2. 然后使用 shift() 方法每次取出最前面的属性名, 存放在 curr
    3. 新建一个 res 对象,先要判断 res[curr] 是否为 undefined, 让 res = res[curr]
    4. 最后返回 res
  • function fn(path, obj) {
        let res = obj,
            curr,
            keys = path.split(".");
        while (curr = keys.shift()) {
            if(!res[curr]) {
                return "undefined"
            } else {
                res = res[curr]
            }
        }
        return res;
    }
    let result = fn("user.school.name", obj)
    console.log(result);
    

猜你喜欢

转载自www.cnblogs.com/chlai/p/12975235.html
今日推荐