I have the following dataset:
var arrayOfObjects = [{
id: '1',
name: '1',
parent: '4'
}, {
name: '2',
parent: '1'
}, {
name: '3',
parent: '1'
}, {
id: '4',
name: '4',
parent: '5'
}, {
name: '5',
id: '5'
}, {
name: '6'
}];
I would like to convert this array into a new array, where the objects are sorted. The only rule is that the object which has parent can not be on lower index than its parent object.
Possible result:
var resultArrayOfObjects = [{
name: '5',
id: '5'
},{
id: '4',
name: '4',
parent: '5'
},{
id: '1',
name: '1',
parent: '4'
},{
name: '2',
parent: '1'
}, {
name: '3',
parent: '1'
}, {
name: '6'
}];
The object with name '6' can be anywhere as he is not parent or child of anyone.
What is the preferred algorithm to make this sort happen?