Это может быть так же просто, как рекурсивное уменьшение.
arr.reduce (function spr (res, cur) {
let obj = {...cur}
let children = obj.children
delete obj.children;
return children.reduce (spr, res).concat ([{
...obj
}])
}, [])
let result = arr.reduce (function spr (res, cur) {
let obj = {...cur}
let children = obj.children;
delete obj.children;
return children.reduce (spr, res).concat ([{
...obj
}])
}, [])
console.log (result)
<script>
var arr = [{
"children": [{
"children": [{
"children": [{
"children": [],
"Id": 1,
"Name": "A",
"Image": "http://imgUrl"
}],
"Id": 1,
"Name": "A",
"Image": "http://imgUrl"
}],
"Id": 2,
"Name": "B",
"Image": "http://imgUrl"
}],
"Id":3,
"Name": "C",
"Image": "http://imgUrl"
}
, {
"children": [{
"children": [{
"children": [],
"Id": 1,
"Name": "A",
"Image": "http://imgUrl"
}],
"Id": 2,
"Name": "B",
"Image": "http://imgUrl"
}],
"Id":3,
"Name": "C",
"Image": "http://imgUrl"
}]
</script>