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

21 浏览
0 Comments

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

这个问题在其他地方已经有答案了

如何检查 JavaScript 对象中是否存在一个键?

尝试找出编写一个函数 keyExists 的最简单方法,该函数检查任意嵌套键是否存在于对象中并且未定义,还是不存在。

假设这个对象

var obj = {
  a: {
    b: 1,
    c: {
      d: 2,
      e: undefined
    }
  }
}

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

所以

keyExists(obj, 'a.c.e') === true
keyExists(obj, 'a.c.f') === false

使用 lodash/underscore 是可以的

** 更新 **

Lodash 的 has 正好像这样工作

admin 更改状态以发布 2023年5月21日
0
0 Comments

你可以尝试以下方法

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)

注意:如果在键名中有任何或者你正在使用[]符号表示法,上面的代码将无法正常工作。

0