私信  •  关注

Dinesh Pandiyan

Dinesh Pandiyan 最近创建的主题
Dinesh Pandiyan 最近回复了

以防万一,任何人在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 这一切都是为了你。