js 中如何判断一个json对象中是否含有某个key

如果在一个多级的json中,判断是否有某一项,需要怎么操作呢?

比如

var obj = {
            a:{
                b:{
                    c:1
                }
            }
        }

要判断 obj中是否含有key 为“c”的子项

有不用循环的方式判断吗?

阅读 22.2k
6 个回答
function find (obj, key) {
    if (! typeof obj === 'object') return false;
    if (key in obj) return true;
    for (var k in obj) if find(obj[k], key) return true;
    return false;
}

===

题主怎么这么苛刻→_→这种东西理论上都是要遍历一遍的不然你怎知下级对象有啥

JSON.stringify()之后再查找字符串,注意排除包含关系的就可以了。

关联问题
http://segmentfault.com/q/1010000004329153

function containsKey(target,key) {
    if (typeof target !== "object" || typeof key !== "string") return false;
    return Object.keys(target)
        .some(k=>(k===key) || containsKey(target[k],key));
}

var lzObj = {
            a:{
                b:{
                    c:1
                }
            }
        }

console.log(containsKey(lzObj,"c"));
if (typeof obj.key !== "undefined") {
    do...
} else {
    do...
}
新手上路,请多包涵

可以考虑jsonpath,当然本质上还是要遍历的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题