I am sorting an array for an *ngFor on my Angular application. So far my array is being sorted on sortId value in ascending order. It then sorts the objects with sordId: null back into the array in its original indices position, result below:
Row 1 - Sort ID: null - original array position: 1
Row 2 - Sort ID: null - original array position: 2
Row 3 - Sort ID: null - original array position: 3
Row 4 - Sort ID: 1 - original array position: 8
Row 5 - Sort ID: null - original array position: 5
Row 6 - Sort ID: null - original array position: 6
Row 7 - Sort ID: 4 - original array position: 7
Row 8 - Sort ID: 5 - original array position: 4
.ts method
this.fieldsList = this.users
.filter(x => x.sortId)
.sort((a, b) => a.sortId - b.sortId);
this.users.forEach((x, i) => {
if (x.sortId === null) this.fieldsList.splice(i, 0, x);
});
What I need it to do is for sortID to take priority over the null values. But the null values keep their original indice number/order unless there is a sortId that takes its place. So the example above will be the expected results below:
Row 1 - Sort ID: 1 - original array position: 8
Row 2 - Sort ID: null - original array position: 1
Row 3 - Sort ID: null - original array position: 2
Row 4 - Sort ID: 4 - original array position: 7
Row 5 - Sort ID: 5 - original array position: 4
Row 6 - Sort ID: null - original array position: 3
Row 7 - Sort ID: null - original array position: 4
Row 8 - Sort ID: null - original array position: 5
Sort IDto be equal toindex + 1in the output? Like,Sort ID: 1is at index = 0,Sort ID: 4is at 3 etc.