试图找出编写函数function foo(){
//some code
await someFunctionCascade();
//call to other functions
}
function someFunctionCascade(){
//call to another synchronous function which calls another function etc..
//at the end of the cascade a function does jquery AJAX which creates a promise
//which is returned all the way up through the cascade to the original call
//inside foo()
}
的最简单方法,该函数检查并任意嵌套键以查看它是否存在于对象中并且未定义,而不会存在。
假设这个对象
keyExisits
在此对象中,键var obj = {
a: {
b: 1,
c: {
d: 2,
e: undefined
}
}
}
存在且为a.c.e
,键undefined
不存在
如此
a.c.f
使用lodash /下划线是可以的
**更新**
Lodash keyExists(obj, 'a.c.e') === true
keyExists(obj, 'a.c.f') === false
的工作原理如下
答案 0 :(得分:3)
您可以尝试关注
var obj = {a: {b: 1,c: {d: 2,e: undefined}}};
function keyExists(o, key) {
if(key.includes(".")) {
let [k, ...rest] = key.split(".");
return keyExists(o[k], rest.join("."));
} else if(o) {
return o.hasOwnProperty(key);
}
return false;
}
console.log(keyExists(obj, 'a.c.e') === true)
console.log(keyExists(obj, 'a.c.f') === false)
注意:如果dots
中有任何key name
,或者您使用的是[]
表示法,那么以上代码将不起作用。