javascript 访问深层嵌套的属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 访问深层嵌套的属性相关的知识,希望对你有一定的参考价值。

function get(obj, props, def) {
  if (obj == null || typeof props !== "string") return def;
  const temp = props.split(".");
  const fieldArr = [].concat(temp);
  temp.forEach((e, i) => {
    if (/^(\w+)\[(\w+)\]$/.test(e)) {
      const matches = e.match(/^(\w+)\[(\w+)\]$/);
      const fieldOne = matches[1];
      const fieldTwo = matches[2];
      const index = fieldArr.indexOf(e);
      fieldArr.splice(index, 1, fieldOne, fieldTwo);
    }
  });
  return fieldArr.reduce((pre, cur) => {
    const target = pre[cur] || def;

    if (target instanceof Array) {
      return [].concat(target);
    }

    if (target instanceof Object) {
      return Object.assign({}, target);
    }

    return target;
  }, obj);
}

// test
var c = { a: { b: [1, 2, 3] } };
get(c, "a.b"); // [1,2,3]

以上是关于javascript 访问深层嵌套的属性的主要内容,如果未能解决你的问题,请参考以下文章

javascript 深层嵌套打印对应的关键值

Json Schema:仅当深层嵌套对象中存在特定属性时才需要属性

如何访问深层嵌套父级中的方法 [Vue][Vuetify]

使用 Python 访问 HTML <script> 标记内的深层嵌套数据

Map list深层嵌套访问增强工具,可以像js 对象一样访问

Vue:深层嵌套对象上的观察者会记录 oldVal 和 newVal 吗?