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

lon*_*556 7 javascript lodash

试图弄清楚编写一个函数的最简单方法是什么,keyExisits该函数检查并任意嵌套键以查看它是否存在于对象中并且未定义,vs不存在。

假设这个对象

var obj = {
  a: {
    b: 1,
    c: {
      d: 2,
      e: undefined
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在此对象中,键a.c.e存在并且是undefined,键a.c.f不存在

所以

keyExists(obj, 'a.c.e') === true
keyExists(obj, 'a.c.f') === false
Run Code Online (Sandbox Code Playgroud)

使用lodash/下划线就可以了

** 更新 **

Lodash 的has工作原理与此完全相同

Nik*_*wal 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)
Run Code Online (Sandbox Code Playgroud)

注意dots:如果有任何符号key name或您正在使用[]符号,则上述代码将不起作用。