zoukankan      html  css  js  c++  java
  • javascript判断嵌套对象属性是否存在

    很多时候,我们需要判断对象的属性是否存在,以便进行下一步的操作

    而对象的属性又有一定的依赖关系,比如

    user.hourse.dog

    if(user) {
      if(user.house) {
        if(user.houre.dog) {
          //如果层级很深的话,就恶心了
        }
      }
    }
    

    如果单纯的把条件换为user.house.dog,就完美了,开始动手

    function isKeyExists(path, object) {
      //在browser或者nodejs下,都能安全取得全局对象
      var global = (function() {
        return this;
      }());
    
      //将传入的对象路径字符串拆分为数组
      var pathList = path.split('.');
      var obj = null;
      //从全局对象中取出名字为 数组[0]的对象
      var globalObj = global[pathList.shift()];
      //如果指定了对象,就从对象中查找,如果没有就使用全局环境
      obj = object || globalObj;
    
      if(!obj) {
        return false;
      }
    
      for(var i=0; key=pathList[i]; i++) {
        if(!obj[key]) {
          return false;
        }
        obj = obj[key];
      }
    
      return true;
    }
    
    
    
    var user = {
      house: {
        dog: 'somedog'
      }
    };
    
    //在浏览器和nodejs中都能正确判断
    if(isKeyExists('user.house.dog', user)) {
      console.log('hello dog');
    } else {
      console.log('nothing');
    }
    
  • 相关阅读:
    第一次设计作业
    项目选题报告(团队)
    第二次结队作业
    团队第一次作业
    原型设计(结对第一次)
    第二次作业——个人项目实战
    对于软件工程专业的思考
    电场与磁场
    透明层上的层或数字不透明
    Visiual Studio2012 CLR20r3问题
  • 原文地址:https://www.cnblogs.com/zhea55/p/2597957.html
Copyright © 2011-2022 走看看