zoukankan      html  css  js  c++  java
  • 动态获取深层次的对象的属性值

    对象

    • 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);
      

    • 方法二:

    • function fn(path, obj) {
          return path.split(".").reduce((data, curr) => {
              return data[curr]
          }, obj)
      }
      let result = fn("user.school.name", obj)
      console.log(result);
      

  • 相关阅读:
    Linux文本处理命令
    管道和重定向
    Linux网络基本配置
    网络基础
    普通权限和特殊权限
    Linux权限
    Linux用户
    Linux帮助文档
    创建新表,自动授权trigger
    禁用约束语法测试
  • 原文地址:https://www.cnblogs.com/chlai/p/12975235.html
Copyright © 2011-2022 走看看