以防万一,任何人在2017年或以后访问此问题,并寻找
容易记住
好的,这里有一篇详细的博客文章
Accessing Nested Objects in JavaScript
不会被愚弄
无法读取未定义的属性“foo”
错误
1。奥利弗·斯蒂尔的嵌套对象访问模式
最简单和最干净的方法是使用oliver steele的嵌套对象访问模式
const name = ((user || {}).personalInfo || {}).name;
用这个符号,你永远不会碰到
无法读取未定义的属性“name”
.
你基本上检查用户是否存在,如果不存在,你就动态地创建一个空对象。这样,下一级键将
总是从存在的对象或空对象访问
,但从未从未定义开始。
2。使用array reduce访问嵌套对象
为了能够访问嵌套数组,可以编写自己的数组,减少UTIL。
const getNestedObject = (nestedObj, pathArr) => {
return pathArr.reduce((obj, key) =>
(obj && obj[key] !== 'undefined') ? obj[key] : undefined, nestedObj);
}
// pass in your object structure as array elements
const name = getNestedObject(user, ['personalInfo', 'name']);
// to access nested array, just pass in array index as an element the path array.
const city = getNestedObject(user, ['personalInfo', 'addresses', 0, 'city']);
// this will return the city from the first address item.
还有一个优秀的类型处理最小库
typy
这一切都是为了你。