我得到了一個包含一些元素的陣列,每個元素都有一些屬性,如名稱、id 和子項。每個元素都有 children 屬性,然后是 sub children 等等。這個陣列已經存在于我們的應用程式中。現在我想用一個名為“path”的新屬性來更新我們陣列的所有元素和子元素。“路徑”將是鍵,其值將是其先前物件名稱的加法。例如
let dataArray = [
{
name: 'Data',
id: 12,
path: 'Data',
children: [
{
name: 'Data Center',
id: 13,
path: 'Data/Data Center',
children: [
{
name: 'Data Management',
id: 13,
path: 'Data/Data Center/Data Managemet',
},
],
},
],
},
{
name: 'Machine',
id: 12,
path: 'Machine',
children: [
{
name: 'Machine Center',
id: 13,
path: 'Machine/Machine Center',
children: [
{
name: 'Machine Management',
id: 13,
path: 'Machine/Machine Center/Machine Managemet',
},
],
},
],
}
];
如您所見,所有元素的路徑屬性。我想以編程方式實作這一點。為此,這是我撰寫的一段代碼,但我無法理解需要做什么才能實作。這段代碼為所有元素和子元素添加了路徑屬性,但名稱為路徑,如上例所示。我想要添加已遍歷的先前名稱。
addPathProperty(){
dataArray.forEach((element) =>{
element.path = element.name;
if(element.children.length > 0){
this.addPathProperty(element.children)
}
});
}
這是鏈接Stackblitz。任何幫助將不勝感激。謝謝
uj5u.com熱心網友回復:
我認為這段代碼應該可以作業:
const appendPath = (root = '') => (obj) => {
obj.path = root ? `${root}/${obj.name}` : obj.name
if (obj.children) {
obj.children.forEach(appendPath(obj.path))
}
}
dataArray.forEach(appendPath())
appendPath是一個接受 a 的函式root,當這個函式被呼叫時,它將結合root和name設定 this 為object.path; object.children之后,如果它們存在,它將執行相同的操作
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/450782.html
標籤:javascript 有角度的 打字稿
