트 리 의 특정한 노드 의 key 에 따라 이 노드 가 있 는 경로 의 모든 노드 를 가 져 옵 니 다.
6842 단어 nodejs
// , 。
function getPathByKey(value, key, arr) {
let temppath = [];
try {
function getNodePath(node){
// push , node, node children
temppath.push(node);
// , throw
if (node[key] === value) {
throw ("GOT IT!");
}
if (node.children && node.children.length > 0) {
for (var i = 0; i < node.children.length; i++) {
getNodePath(node.children[i]);
}
// ,
temppath.pop();
}
else {
// ,
temppath.pop();
}
}
for (let i = 0; i < arr.length; i++) {
getNodePath(arr[i]);
}
} catch (e) {
return temppath;
}
}
사례 백 엔 드 에서 들 려 오 는 트 리 구 조 를 사용 합 니 다. 전단 은 현재 가장 안쪽 에 있 는 id 값 에 따라 경 로 를 가 져 옵 니 다.
var tree = [
{
id: 5,
name: "root",
children: [{
id: 51,
name: " ",
children: [{
id: 511,
name: " ",
children: [{
id: 5111,
name: "xx "
}]
}]
}]
},
{
id: 6,
name: "root",
children: [{
id: 61,
name: " ",
children: [{
id: 611,
name: " ",
children: [{
id: 6111,
name: "xx "
}]
}]
}]
},
{
id: 7,
name: "root",
children: [{
id: 71,
name: " ",
children: [{
id: 711,
name: " ",
children: [{
id: 7111,
name: "xx "
}]
}]
}]
}
]
function getPathByKey(value, key, arr) {
let temppath = [];
try {
function getNodePath(node){
temppath.push(node);
// , throw
if (node[key] === value) {
throw ("GOT IT!");
}
if (node.children && node.children.length > 0) {
for (var i = 0; i < node.children.length; i++) {
getNodePath(node.children[i]);
}
// ,
temppath.pop();
}
else {
// ,
temppath.pop();
}
}
for (let i = 0; i < arr.length; i++) {
getNodePath(arr[i]);
}
} catch (e) {
return temppath;
}
}
let res = getPathByKey(6111, 'id', tree);
console.log(res);
$ node getNode.js
[
{ id: 6, name: 'root', children: [ [Object] ] },
{ id: 61, name: ' ', children: [ [Object] ] },
{ id: 611, name: ' ', children: [ [Object] ] },
{ id: 6111, name: 'xx ' }
]
<script src="https://code.csdn.net/snippets/37.js">script>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Node.js를 AWS서버에서 사용하는 실습간단한 예제와 함께 AWS에서 Node.js를사용하는 법을 배워보도록 하겠다. 해당 github에 있는 레포지토리로 사용을 할 것이다. 3000번 포트로 Listen되는 예제이고 간단히 GET, POST, DELET...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.