代码之家  ›  专栏  ›  技术社区  ›  Yoarthur

检查使用lodash嵌套的对象中是否存在方法

  •  0
  • Yoarthur  · 技术社区  · 7 年前

    检查是否 isCourage()

    puppy {
    
      ...
    
      goldenRetriever {
    
         ...
    
         hasCourage(){ ... }
    
      }
    
    }
    

    Lodash可以做到这一点,但我不确定应该使用哪种方法。

    2 回复  |  直到 7 年前
        1
  •  2
  •   Akrion    7 年前

    使用lodash,您可以使用以下功能:

    你可以用 _.isFunction _.get :

    let obj = {
      foo:{
        bar:{
          fooBar: function(b) { return b }
        }
      }
    }
    
    console.log(_.isFunction(_.get(obj,'foo.bar.fooBar')))
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>

    你也可以使用 _.result not care 真的,不管它是不是一个函数。 _.结果 会走这条路执行任何 是一个函数 并返回最终值:

    let obj = {
      foo:{
        bar:{
          fooBar: function(b='yay') { return b }
        }
      }
    }
    
    console.log(_.result(obj, 'foo.bar.fooBar'))
    <脚本src=”https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js“></脚本>
        2
  •  0
  •   Cody Geisler    7 年前

    _.get(puppy,'bar.goldenRetrieve.foo.hasCorauge.constructor') === Function
    

    (bar和foo是自 ...

    let obj = {
      foo:{
        bar:{
          myFn:function(b){return b;}
        }
      }
    }
    
    console.log(_.get(obj,'foo.bar.myFn.constructor')===Function);
    console.log(_.get(obj,'foo.bar.myFn2.constructor')===Function);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>