假设我有一个对象:
[ { 'title': "some title" 'channel_id':'123we' 'options': [ { 'channel_id':'abc' 'image':'http://asdasd.com/all-inclusive-block-img.jpg' 'title':'All-Inclusive' 'options':[ { 'channel_id':'dsa2' 'title':'Some Recommends' 'options':[ { 'image':'http://www.asdasd.com' 'title':'Sandals' 'id':'1' 'content':{ ...
我想找到一个id为1的对象。是否有类似这样的功能?我可以使用Underscore的_.filter方法,但必须从顶部开始然后向下过滤。
_.filter
递归是您的朋友。我更新了该函数以说明属性数组:
function getObject(theObject) { var result = null; if(theObject instanceof Array) { for(var i = 0; i < theObject.length; i++) { result = getObject(theObject[i]); if (result) { break; } } } else { for(var prop in theObject) { console.log(prop + ': ' + theObject[prop]); if(prop == 'id') { if(theObject[prop] == 1) { return theObject; } } if(theObject[prop] instanceof Object || theObject[prop] instanceof Array) { result = getObject(theObject[prop]); if (result) { break; } } } } return result; }