试图弄清楚编写一个函数的最简单方法是什么,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工作原理与此完全相同
您可以尝试以下
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或您正在使用[]符号,则上述代码将不起作用。
| 归档时间: |
|
| 查看次数: |
831 次 |
| 最近记录: |