商城网站哪个公司做的好处,保健品 东莞网站建设,wordpress如何压缩图片大小,本地网站后台密码在JavaScript中访问嵌套对象以超酷的方式安全地访问JavaScript中的嵌套对象JavaScript是惊人的#xff0c;我们都知道。但是JavaScript中的一些东西真的很奇怪#xff0c;它们让我们大开眼界。其中一个问题是当您尝试访问嵌套对象时与此错误的对抗#xff0c;无法读取未定义…在JavaScript中访问嵌套对象以超酷的方式安全地访问JavaScript中的嵌套对象JavaScript是惊人的我们都知道。但是JavaScript中的一些东西真的很奇怪它们让我们大开眼界。其中一个问题是当您尝试访问嵌套对象时与此错误的对抗无法读取未定义的属性foo大多数情况下当我们使用JavaScript时我们将处理嵌套对象并且通常我们需要安全地访问最里面的嵌套值。我们以此嵌套对象为例。const user { id: 101, email: jackdev.com, personalInfo: { name: Jack, address: { line1: westwish st, line2: washmasher, city: wallas, state: WX } }}要访问我们用户的名字我们会写const name user.personalInfo.name;const userCity user.personalInfo.address.city;这很简单直接。但是由于某种原因如果我们用户的个人信息不可用那么对象结构将是这样的。const user { id: 101, email: jackdev.com}现在如果您尝试访问该名称您将被抛出 无法读取未定义的属性“名称”。const name user.personalInfo.name; // Cannot read property name of undefined这是因为我们试图name 从不存在的对象访问 密钥。大多数开发人员处理这种情况的常用方法是const name user user.personalInfo ? user.personalInfo.name : null;// undefined error will NOT be thrown as we check for existence before access如果您的嵌套结构很简单这是可以的但是如果您的数据嵌套了5或6级那么您的代码看起来会非常混乱let city;if ( data data.user data.user.personalInfo data.user.personalInfo.addressDetails data.user.personalInfo.addressDetails.primaryAddress ) { city data.user.personalInfo.addressDetails.primaryAddress;}处理这种混乱的对象结构有一些技巧。Oliver Steele的嵌套对象访问模式这是我个人最喜欢的因为它使代码看起来 干净 和 简单。我从stackoverflow中选择了这种风格一旦你理解它是如何工作的它就非常吸引人了。const name ((user || {}).personalInfo || {}).name;使用这种表示法您将永远不会遇到 无法读取未定义的属性“名称”。你基本上检查用户是否存在如果没有你动态创建一个空对象。这样下一级键将 始终从存在的对象或空对象访问但永远不会从未定义。不幸的是 您无法使用此技巧访问嵌套数组使用Array Reduce访问嵌套对象Array reduce方法非常强大可用于安全地访问嵌套对象。const getNestedObject (nestedObj, pathArr) { return pathArr.reduce((obj, key) (obj obj[key] ! undefined) ? obj[key] : null, nestedObj);}// pass in your object structure as array elementsconst 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.Typyhttps://github.com/flexdinesh/typy如果您认为上述方法过于主流那么您应该尝试 我编写的Typy库。除了安全地访问嵌套对象之外它还有许多令人敬畏的东西。它以npm包的形式提供 - Typy如果您使用 Typy您的代码将如下所示import t from typy;const name t(user, personalInfo.name).safeObject;const city t(user, personalInfo.addresses[0].city).safeObject;// address is an array编辑还有一些像Lodash和Ramda这样的其他库可以做到这一点。但是在轻量级的前端项目中特别是如果你只需要这些库中的一两种方法最好选择替代轻量级的lib或者更好自己编写。快乐安全地访问JavaScript中的嵌套对象链接https://javascriptkicks.com/articles/236734/accessing-nested-objects-in-javascript