I have this unsorted array (containing objects)
toSortArray = [{taskID: 1, "title": "something1", subtasks: {}},
{taskID: 5, "title": "something5", subtasks: {}},
{taskID: 8, "title": "something8", subtasks: {}}];
and I have this array that is dynamically populated based on the correct positioning of the taskIDs
sortingArray = [8, 1, 5];
What I am trying to do is to sort ‘toSortArray’ with the exact same order as stated in ‘sortingArray’.
I have found a somewhat called solution here stating this:
var arr = ['one','four','two'];
var test = [{
key: 'one'
},{
key: 'two'
},{
key: 'four'
}];
function sortFunction(a,b){
var indexA = arr.indexOf(a['key']);
var indexB = arr.indexOf(b['key']);
if(indexA < indexB) {
return -1;
}else if(indexA > indexB) {
return 1;
}else{
return 0;
}
}
However, it doesn’t work for me. I replaced the placeholders for:
function sortFunction (a,b) {
var indexA = sortingArray.indexOf(a["taskID"]);
console.log(indexA);
var indexB = sortingArray.indexOf(b["taskID"]);
console.log(indexB);
if (indexA < indexB) {
return -1;
} else if (indexA > indexB) {
return 1;
} else {
return 0;
}
}
When I debugged (as you can see I am console logging the indexA and indexB). They always return -1, which means no such index is found.
My question is how to get to compare “taskID” value and the sortingArray elements.
Thank you 🙂