84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
如果在一个多级的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结构需要遍历