json 트 리 데이터 하위 노드 재 귀적 으로 모든 부모 노드 를 찾 는 방법
해결 방법:
<html lang="en">
<head>
<meta charset="UTF-8">
<title>json-querytitle>
<script type="text/javascript">
var json = [{"value":"1","text":" ","pid":"0","children":[{"value":"2","text":" ","pid":"1","children":[{"value":"3","text":" ","pid":"2","children":[{"value":"4","text":" ","pid":"3","children":[]},{"value":"5","text":" ","pid":"3","children":[]},{"value":"6","text":" ","pid":"3","children":[{"value":"fe8de48f20e54590bf60a83c4485a650","text":" ","pid":"6","children":[]},{"value":"4ac6d79609b5496f9296614ef4166ac7","text":" ","pid":"6","children":[]}]}]}]}]}]
script>
<script type="text/javascript">
/**
* JSON
*/
var parentNode = null;
var node = null;
/**
* text
*/
function getNode(json, text) {
//1. root JSON
for (var i = 0; i < json.length; i++) {
if (node) {
break;
}
var obj = json[i];
//
if (!obj || !obj.text) {
continue;
}
//2. ,
if (obj.text == text) {
// text ,
node = obj;
break;
} else {
//3.
if (obj.children&&obj.children.length!=0) {
//4. , , parent
parentNode = obj;
//
getNode(obj.children, text);
} else {
// ,
continue;
}
}
}
//5. , null,
if (!node) {
parentNode = null;
}
//6. obj
return {
parentNode: parentNode,
node: node
};
}
//
var query = ' ';
var result = [];
var getResult = function(json,query){
node = null;
parentNode = null;
var obj = getNode(json, query);
//
if(obj.parentNode){
//
console.log(" text:" + query + ", :" + obj.node.text + " -> :" + (obj.parentNode ? obj.parentNode.text : ' !'));
// text
getResult(json,obj.parentNode.text);
result.push(obj.parentNode.text);
}
return result;
}
getResult(json,query);
// push result
result.push(query);
console.log(result);//[' ',' ',' ',' ',' ']
script>
head>
<body>
body>
html>
내용 은 자신의 수정 을 거 쳐 이 블 로 그 는 다음 과 같이 전재 되 었 다.http://www.cnblogs.com/ae6623/p/5264128.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
전단 자동화 워 크 플 로 의 hooks예 를 들 어 우 리 는 git commt 전에 eslint 코드 검사, npm install 전에 프로젝트 의존 도 를 검사 하고 싶 습 니 다.전형 적 인 상황 에서 각종 도 구 는 특정한 동작 이 발생 할 때 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.