javascript - js 中如何判断一个json对象中是否含有某个key
迷茫
迷茫 2017-04-11 10:46:45
[JavaScript讨论组]

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

比如

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

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

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

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(6)
PHPz
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,当然本质上还是要遍历的

巴扎黑

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号