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'); }


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM