即使未定义,也要检查嵌套的键是否存在
即使未定义,也要检查嵌套的键是否存在
这个问题在其他地方已经有答案了:
尝试找出编写一个函数 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日
你可以尝试以下方法
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)
注意:如果在键名
中有任何点
或者你正在使用[]
符号表示法,上面的代码将无法正常工作。