function getId(arr, id, ids = []) {
if (id) {
for (let item of arr) {
if (item.id == id) {
ids.push(item.id)
getId(item.children, false, ids)
} else {
getId(item.children, id, ids)
}
}
} else {
for (let i of arr) {
ids.push(i.id)
if (i.children) {
getId(i.children, false, ids)
}
}
}
return ids
}
//获取所有父节点
export const findParents = (childrenId, arr, path = []) => {
for (let i = 0; i < arr.length; i++) {
let tmpPath = path.concat();
tmpPath.push(arr[i].id);
if (childrenId == arr[i].id) {
return tmpPath;
}
if (arr[i].children) {
let findResult = findParents(childrenId, arr[i].children, tmpPath);
if (findResult) {
return findResult;
}
}
}
};
//获取所有子节点
export const findChildren = (id, tree, temporary = []) => {
if (!id) {
tree.forEach(item => {
temporary.push(item.id);
if (item.children) {
findChildren(false, item.children, temporary);
}
});
}
tree.forEach(item => {
if (item.id === id) {
temporary.push(item.id);
if (item.children) {
findChildren(false, item.children, temporary);
}
} else {
if (item.children) {
findChildren(id, item.children, temporary);
}
}
});
return temporary;
};
//获取所有兄弟节点
export const findSiblings = (id, tree, temporary = []) => {
if (tree.find(item => item.id === id)) {
tree.forEach(item => temporary.push(item.id));
return temporary;
}
tree.forEach(item => {
if (item.children) {
findSiblings(id, item.children, temporary);
}
});
return temporary;
};
//获取节点名称
export const findNodeName = (id, tree = [], temporary = []) => {
tree.forEach(item => {
if (item.id == id) {
temporary.push(item.dictValue);
} else if (item.children) {
findNodeName(id, item.children, temporary);
}
});
return temporary[0];
};
JavaScript递归获取字节的id
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 获取字节码的三种方式: Object类的getClass()方法 静态属性class Class类中的静态方法fo...