首页  >  问答  >  正文

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

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

比如

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

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

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

迷茫迷茫2748 天前1061

全部回复(6)我来回复

  • PHPz

    PHPz2017-04-11 10:48:45

    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;
    }

    ===

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

    回复
    0
  • 怪我咯

    怪我咯2017-04-11 10:48:45

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

    回复
    0
  • 高洛峰

    高洛峰2017-04-11 10:48:45

    关联问题
    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"));
    

    回复
    0
  • 怪我咯

    怪我咯2017-04-11 10:48:45

    if (typeof obj.key !== "undefined") {
        do...
    } else {
        do...
    }

    回复
    0
  • 迷茫

    迷茫2017-04-11 10:48:45

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

    回复
    0
  • 巴扎黑

    巴扎黑2017-04-11 10:48:45

    这样的多级json结构需要遍历

    回复
    0
  • 取消回复