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...