📌  相关文章
📜  使用点获取对象反应的嵌套值 - Javascript(1)

📅  最后修改于: 2023-12-03 14:49:56.196000             🧑  作者: Mango

使用点获取对象反应的嵌套值 - JavaScript

当要获取一个对象嵌套的值时,我们可以通过点符号来访问每一层嵌套的属性。但是如果对象的嵌套层数很多,这种方式就会变得很繁琐。在这种情况下,我们可以使用递归函数来获取嵌套值。

访问嵌套属性

访问对象的属性值通常可以使用点符号或方括号。例如:

const myObj = {
  name: '张三',
  age: 18,
  address: {
    city: '北京',
    district: '海淀区',
    street: 'xxxx街道'
  }
};

console.log(myObj.name); // '张三'

console.log(myObj.address.city); // '北京'

console.log(myObj['address']['street']); // 'xxxx街道'

这些方法都可以获取对象的属性值,但是如果对象的嵌套层数很多,这种方式就会很繁琐。

使用递归函数获取嵌套值

递归是一种常见的解决问题的方式。在获取嵌套对象的值时,也可以使用递归函数来实现。例如:

const myObj = {
  name: '张三',
  age: 18,
  address: {
    city: '北京',
    district: '海淀区',
    street: 'xxxx街道'
  }
};

function getValue(obj, path) {
  const keys = path.split('.');
  if (keys.length === 1) {
    return obj[keys[0]];
  }
  const key = keys.shift();
  return getValue(obj[key], keys.join('.'));
}

console.log(getValue(myObj, 'name')); // '张三'

console.log(getValue(myObj, 'address.city')); // '北京'

console.log(getValue(myObj, 'address.street')); // 'xxxx街道'

这个函数可以通过递归访问嵌套的对象属性。它的原理是将路径字符串拆分为一个数组,然后递归访问每一个层级的属性。当数组只剩一个元素时,返回该属性的值。否则,取出第一个元素作为属性名,再将剩余部分作为路径传递给新的递归调用。

总结

在获取嵌套对象的值时,可以使用点符号或方括号访问每一层属性。但是如果对象的嵌套层数很多,这种方式就会很繁琐。使用递归函数可以更方便地访问嵌套的属性。