I want to get longest name value in bellow associative array of TypeScript. Some objects in array have child array. I want to check all nest array.
interface Tree {
id: string
name: string
child?: Tree[]
}
const treeArray: Tree[] = [
{
id: "test", name: "test1", child: [
{ id: "Test#2", name: "@2ndtest" },
{
id: "test#2", name: "2ndtest", child: [
{ id: "Test#2#3", name: "@3rdtestTestTest" },
]
}
]
},
{ id: "testtest", name: "testtest2" }
]
So, my expected out put was like below.
{ id: "Test#2#3", name: "@3rdtestTestTest" }
I made code below get output.
const getLongestNameObjectInTreeArray = (value: Tree[]) => {
let getObj: Tree = { id: "", name: "" }
let longestName = 0
value.forEach((v) => {
let nameLength = v.name.length
if (<any>nameLength > longestName) {
longestName = <any>nameLength
getObj = { id: v.id, name: v.name }
}
})
return getObj
}
console.log(getLongestNameObjectInTreeArray(treeArray))
but this code output was { id: 'testtest', name: 'testtest2' }
The problem is my function is not loop nest array. Does anyone advise me,please?