如果在一个多级的json中,判断是否有某一项,需要怎么操作呢?
比如
var obj = { a:{ b:{ c:1 } } }
要判断 obj中是否含有key 为“c”的子项
有不用循环的方式判断吗?
业精于勤,荒于嬉;行成于思,毁于随。
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()之后再查找字符串,注意排除包含关系的就可以了。
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结构需要遍历
===
题主怎么这么苛刻→_→这种东西理论上都是要遍历一遍的不然你怎知下级对象有啥
JSON.stringify()
之后再查找字符串,注意排除包含关系的就可以了。关联问题
http://segmentfault.com/q/1010000004329153
可以考虑jsonpath,当然本质上还是要遍历的
这样的多级json结构需要遍历