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