【问题标题】:Dynamically access deeply nested object properties by splitting a string with dot separators [duplicate]通过使用点分隔符拆分字符串来动态访问深度嵌套的对象属性[重复]
【发布时间】:2022-01-05 10:09:43
【问题描述】:

考虑以下 JSON 对象:

{
    "data": {
        "data2": {
            "myProp": "hello"
        }
    }
}

我需要能够动态访问深度属性myProp,但问题是,我需要能够将深度属性写为常规字符串。即:

let sortByThisValue = 'data.data2.myProp'

所以我已经开始了:

let propertyArray = sortByThisValue.split('.')
//Do something here
let myVal = data.[data2][myProp] //Or data.data2.myProp 

【问题讨论】:

  • 如果其中一个属性名称包含点.怎么办?

标签: javascript json


【解决方案1】:

你可以像下面这样访问

const obj = {
  data: {
    data2: {
      myProp: "hello",
    },
  },
};

const key = "data.data2.myProp";

const getValue = (obj, key) => {
  const keys = key.split(".");
  let value = obj;
  for (let i = 0; i < keys.length; i++) {
    value = value[keys[i]];
    if (!value) {
       break;
    }
  }
  return value;
};


console.log(getValue(obj, key));
console.log(getValue(obj, 'abc'));

【讨论】:

    猜你喜欢
    • 2017-03-21
    • 2014-02-26
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    相关资源
    最近更新 更多