I have an array like this
var array = [{
order: 3,
sub - array: [{
order: 2
},{
order: 1
}]
},{
order: 2,
sub - array
var propertySort = function(a, b){
return a.order > b.order ? 1 : (a.order < b.order ? -1 : 0);
}
var reorder = function(arr){
var l = arr.length;
while (l--){
if (arr[l]['sub-array']){
reorder(arr[l]['sub-array']);
}
}
arr.sort(propertySort);
};
reorder(arr);
console.log(arr);
This should re-order the array for any number of nested levels.
Use Array.prototype.sort
and call it on array
and subsequently on each element of array
with an appropriate compare function.
Something like this should work:
array.sort(function (e1, e2) {
return (e1.order - e2.order);
});
array.forEach(function(e) {
e["sub-array"].sort(function (e1, e2) {
return (e1.order - e2.order);
});
});