复杂对象是数组或者对象,或者嵌套嵌套很深的对象数组,递归找到是否包含某个值,并且返回它的最小层级对象:
var flag = false; function exitindata(data,item){ if(data instanceof Array){ var i = data.length; while(i--){ if(flag){ break; } if(data[i] === item){ flag = true; break }else{ if(data[i] instanceof Array || data[i] instanceof Object){ flag=exitindata(data[i],item); } } } }else{ for(var key in data){ if(flag){ break } if(data.hasOwnProperty(key) === true){ if(data[key] === item){ flag = true; break }else{ if(data[key] instanceof Array || data[key] instanceof Object){ flag=exitindata(data[key],item); } } } } } if(flag){ flag=false; return true; }else{ return null } } function find(item){ var data = [9, { item1:50, item2:94, item3:[ { cc: 9999, ff:9090 } ] } ,65,1111,54,11,0,1,3,7,8,5,649,841]; console.log(exitindata(data,item)); } exitindata能找到那个数,且能知道包裹它的最小层级即data
在链接:https://ask.csdn.net/questions/379889处看到且自己实际使用了。