javascript - js 中如何判断一个json对象中是否含有某个key
迷茫
迷茫 2017-04-11 10:46:45
0
6
1112

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

比如

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

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

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

迷茫
迷茫

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

全員に返信(6)
PHPzhong
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
刘奇

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

いいねを押す +0
小葫芦

关联问题
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
刘奇
if (typeof obj.key !== "undefined") {
    do...
} else {
    do...
}
いいねを押す +0
迷茫

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

いいねを押す +0
巴扎黑

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート