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');
    }
    
  • 相关阅读:
    Android作业10/21
    Android作业10/07
    Android作业0930
    Android作业 0923
    第四周作业
    第七周
    第六周
    第四周作业
    3.10第二次
    jsp第一次作业
  • 原文地址:https://www.cnblogs.com/zhea55/p/2597957.html
Copyright © 2011-2022 走看看