【发布时间】:2018-12-06 20:39:35
【问题描述】:
例如,
检查isCourage()方法是否存在于此类对象中。
puppy {
...
goldenRetriever {
...
hasCourage(){ ... }
}
}
Lodash 可以解决问题,但我不确定我应该使用哪种方法。
【问题讨论】:
标签: javascript json object data-structures lodash
例如,
检查isCourage()方法是否存在于此类对象中。
puppy {
...
goldenRetriever {
...
hasCourage(){ ... }
}
}
Lodash 可以解决问题,但我不确定我应该使用哪种方法。
【问题讨论】:
标签: javascript json object data-structures lodash
使用 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 来确定它是否是一个函数。 _.result 会沿着路径执行任何函数并返回最终值:
let obj = {
foo:{
bar:{
fooBar: function(b='yay') { return b }
}
}
}
console.log(_.result(obj, 'foo.bar.fooBar'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
【讨论】:
你可以使用
_.get(puppy,'bar.goldenRetrieve.foo.hasCorauge.constructor') === Function
(bar 和 foo 是示例,因为 ... 会令人困惑,如果是函数,.contructor 应该返回 Function...)
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>
【讨论】: