javascript - 即使未定义,也检查嵌套键是否存在
问题描述
试图找出编写keyExisits
检查和任意嵌套键以查看它是否存在于对象中并且未定义的函数的最简单方法,vs 不存在。
假设这个 obj
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/下划线是可以的
** 更新 **
Lodash 的has
工作原理就是这样
解决方案
您可以尝试以下
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
[]
推荐阅读
- python - 带有效括号的递归问题
- visual-studio - Visual Studio 新项目不会运行测试
- vb.net - Visual Basic 2019 中 Crystal Reports 的动态更改数据源
- android - 文本在 Android 10 设备上的文件中被奇怪地编码
- ansible - 使用 Ansible 运行本地命令并在远程上下文中共享变量
- python - python删除具有相同键的行并保留具有最新日期戳的行
- python - 如何使用 xgboost.train()
- react-native - 如何更改本机基本输入的字体系列?
- html - 卡未正确对齐
- javascript - 如何在不影响性能的情况下重复访问 Vue 道具?