资讯专栏INFORMATION COLUMN

JS中检查内嵌对象是否存在

dmlllll / 1616人阅读

摘要:有如下多层嵌套的对象方法或方法方法方法方法如果有更好的方式,欢迎补充

有如下多层嵌套的对象:

var obj = {
  l1: {
    l2: {
      l3: "Hello World"
    }
  }
}

 

方法1:
var r = (((obj || {}).l1 || {}).l2 || {}).l3;

var r = obj.l1 && obj.l1.l2 && obj.l1.l2.l3

 

方法2:
let delve = (obj, key) => (key.split(".").map(p => (obj = obj && obj[p])), obj);
console.log(delve(obj, "l1.l2.l3")); // Hello World

 

方法3:
function checkNested(obj, key, ...rest) {
  if (obj === undefined || obj === null) return false;
  if (rest.length == 0 && obj.hasOwnProperty(key)) return true;
  return checkNested(obj[key], ...rest);
}

console.log(checkNested(obj, "l1", "l2", "l3")); // true

 

方法4:
function validChain(obj, ...keys) {
  return keys.reduce((obj, key) => (obj || {})[key], obj) !== undefined
}
console.log(validChain(obj, "l1", "l2", "l3")); // true

 

方法5:
function objHasKeys(obj, keys) {
  var next = keys.shift();
  return obj[next] && (! keys.length || objHasKeys(obj[next], keys));
}

如果有更好的方式,欢迎补充

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110247.html

相关文章

  • 封装

    摘要:上一篇文章距离有出不多一个多月了现在好不容易有了好心情继续看书写点感悟第三章讲述的是封装像可以通过关键字来声明一个方法使得只有该对象内部的代码才能执行它在中没有这样的关键字但是可以使用闭包来创建只允许从对象内部访问的方法和属性相比于闭包走了 上一篇文章距离有出不多一个多月了,现在好不容易有了好心情,继续看书,写点感悟. 第三章讲述的是js封装,像java,可以通过private关键字来...

    Ethan815 评论0 收藏0
  • H5 缓存机制浅析 - 移动端 Web 加载性能优化

    摘要:根据标准,到目前为止,一共有种缓存机制,有些是之前已有,有些是才新加入的。首次请求缓存有效期内请求缓存过期后请求一般浏览器会将缓存记录及缓存文件存在本地文件夹中。 腾讯 Bugly 特约作者:贺辉超 1. H5 缓存机制介绍 H5,即 HTML5,是新一代的 HTML 标准,加入很多新的特性。离线存储(也可称为缓存机制)是其中一个非常重要的特性。H5 引入的离线存储,这意味着 web ...

    alin 评论0 收藏0
  • 参数默认值引起的第三作用域

    摘要:如果形参有设置默认值,第二个就被建立,他针对的是函数体内的声明我们可以形象的理解为这是一个除了函数作用域和块级作用域之外的第三作用域。 开门见山,我们来看看下面这个有趣的例子 showImg(http://ogitl0zvo.bkt.clouddn.com/public/16-11-12/77445738.jpg);  对于上面这种用var的声明方式,无论x的默认值为什么,只要形参中出...

    Fourierr 评论0 收藏0
  • JavaScript性能优化之加载与执行

    摘要:在浏览区中的性能,可以认为是开发者所面临的最严重的可用性问题。优化这个问题的第一步从它的加载和执行开始。这意味着在对象的事件触发后再下载脚本。属性指明本元素所含的脚本不会修改,因此代码能够安全地执行,但是浏览器的支持情况不理想。 JavaScript在浏览区中的性能,可以认为是开发者所面临的最严重的可用性问题。 优化这个问题的第一步从它的加载和执行开始。 霸道的script标签scr...

    call_me_R 评论0 收藏0

发表评论

0条评论

dmlllll

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<