检查嵌套键是否存在,即使未定义

时间:2018-08-30 09:27:31

标签: javascript lodash

试图找出编写函数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 的工作原理如下

1 个答案:

答案 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,或者您使用的是[]表示法,那么以上代码将不起作用。