我需要在繪制圖表之前添加資料路徑。我將如何使用遞回通過鍵抓取某個可能深度嵌套的物件?我已經嘗試過,但這不適用于比 n 層更深的嵌套:
這是資料:
[
{
"name": "a",
"description": "",
"categories": [
{
"name": "aa",
"description": "",
"categories": [
{
"name": "aaa",
"description": "",
"categories": [
{
"name": "aaaa",
"description": "",
"categories": [
],
"count": 55
}
],
"count": 20
}
],
"count": 25
}
],
"count": 50
}
]
預期結果:
[
{
"name": "a",
"description": "",
"path": "a",
"categories": [
{
"name": "aa",
"description": "",
"path": "a/aa",
"categories": [
{
"name": "aaa",
"description": "",
"path": "a/aa/aaa",
"categories": [
{
"name": "aaaa",
"description": "",
"path": "a/aa/aaa/aaaa",
"categories": [
],
"count": 55
}
],
"count": 20
}
],
"count": 25
}
],
"count": 50
}
]
uj5u.com熱心網友回復:
這是一個快速的方法,它修改了原始陣列。
const data = [
{
"name": "a",
"description": "",
"categories": [
{
"name": "aa",
"description": "",
"categories": [
{
"name": "aaa",
"description": "",
"categories": [
{
"name": "aaaa",
"description": "",
"categories": [
],
"count": 55
}
],
"count": 20
}
],
"count": 25
}
],
"count": 50
}
];
const updatePaths = (arr, path = "") => {
arr.forEach(el => {
el.path = path el.name;
updatePaths(el.categories, el.path "/");
});
};
updatePaths(data);
console.log(data);
uj5u.com熱心網友回復:
let data = [{
"name": "a",
"description": "",
"categories": [{
"name": "aa",
"description": "",
"categories": [{
"name": "aaa",
"description": "",
"categories": [{
"name": "aaaa",
"description": "",
"categories": [],
"count": 55
}],
"count": 20
}],
"count": 25
}],
"count": 50
}]
const tagWithPath = ([first, ...rest], currentPath = '') => {
if (!first) return;
const newPath = currentPath '/' first.name
first.path = newPath
tagWithPath(first.categories, newPath)
tagWithPath(rest, newPath)
}
tagWithPath(data)
console.log(data)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/421754.html
標籤:
