返回true 表明字符串在树形数据中不存在需要进一步处理
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript">
var state = "11111111111111/13123132/123233";
var obj=[{"id":1,"label":"11111111111111","children":[{"id":4,"label":"1312312","children":[{"id":7,"label":"12323"},{"id":8,"label":"211111"}]}]},{"id":2,"label":"1232321","children":[{"id":5,"label":"11223"}]},{"id":3,"label":"312313","children":[{"id":6,"label":"12323"}]}];
trees = state.split("/");
console.log( "ob:"+JSON.stringify(equalObj (obj,trees)))
function equalObj (obj,trees){
return jsonEqual (obj,null,trees,0)
}
function jsonEqual (nodes ,node,trees ,r ) {
if (Array.isArray(nodes)) {
for (var i=0, l=nodes.length; i<l; i++) {
console.log("trees:"+trees[r]+" label:"+nodes[i]["label"]);
if(nodes[i]["label"]==trees[r]){
++r;
if (Array.isArray(nodes[i]["children"])&&nodes[i]["children"].length>0){
return jsonEqual(nodes[i]["children"],nodes[i],trees,r);}
else{
//return nodes[i];
return {"trees":trees[r],"nodes":nodes[i],"bool":false}
}
}
return {"trees":trees[r],"nodes":node,"bool":true}
}
}
};
</script>
</head>
<body>
</body>
</html>