zoukankan      html  css  js  c++  java
  • [Javascript] Safe Nested Object Inspection

    A common problem when dealing with some kinds of data is that not every object has the same nested structure. lukeskywalker.parents.father.isjedi works, but anakinskywalker.parents.father.isjedi throws an exception, because anakin_skywalker.parents.father is undefined. But we can reduce a path to provide safe default values and avoid exceptions when walking the same path on non-homogenous objects

    let han, anakin, luke;
    
    han = {
      name: 'han',
      parents: {
        father: {
          jedi: true,
        },
        mother: {
          jedi: false
        }
      }
    };
    
    anakin = {
      name: 'anakin',
      parents: {
        father: {
          jedi: false,
        },
        mother: {
          jedi: false
        }
      }
    };
    
    luke = {
      name: "luke",
      parents: {
        mother: {
          jedi: false
        }
      }
    };
    
    
    let worries = [
      han, anakin, luke
    ];
    
    function fatherIsJedi(person){
      let path = "parents.father.jedi";
      
      return path.split('.').reduce( (acc, curr)=>{
        if(acc){
          return acc[curr]; 
        }
        
        return false;
      }, person );
    };
    
    worries.forEach( (person)=> {
      console.log(`${person.name}'s fathter is a Jedi: `, fatherIsJedi(person));
    })
  • 相关阅读:
    IE8下,时间函数问题
    sublime有时候用快捷键时出现的是css的快捷键
    热词高亮并去重
    关于百分比的margin
    手机端后退功能
    CSS3小水滴代码
    关于Gmapping的学习2
    关于概率运动模型
    A*算法的学习
    经典ICP算法
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5129033.html
Copyright © 2011-2022 走看看