I have an array of JavaScript objectss that have a string description. I am trying to implement a simplified sorting algorithm that will drop case, strip out HTML tags, and then strip out everything but letters and digits. I have:
DASHBOARD.todo_entries.sort(function(first, second)
{
var first_workbench = first.description.toLowerCase();
var second_workbench = second.description.toLowerCase();
first_workbench = first_workbench.replace(/<.*?>/, '');
second_workbench = second_workbench.replace(/<.*?>/, '');
first_workbench = first_workbench.replace(/[^_\w]/, '');
second_workbench = second_workbench.replace(/[^_\w]/, '');
console.log('"' + first_workbench + '", "' + second_workbench + '"');
return (first_workbench > second_workbench);
});
At present that is consistently generating a sort order with descriptions of:
Testing: d.
Testing: e.
Test: a.
Testing: f.
Test: c.
Test: b.
Testing: g.
Testing: b.
Testing: a.
Test: d.
Testing: c.
Testing: h.
Testing: i.
Testing: j.
Testing: k.
Testing: l.
What I'd expect to happen is that it would have "Test: [a-d]" appearing in order, and then "Testing: [a-l]" appearing in order.
I'm not sure how to code something that would naturally generate this order; it doesn't match their order of creation (I think the creation times/order of "Test: [a-d]" and "Testing: [a-l]" overlap, but they were individually created in sequential order).
I am getting similar, but not identical, results if I just set the function to compare the unaltered descriptions with either < or >. At least within "Test"/"Testing", an unaltered lexicographic search should coincide with the results of the search I want. I've searched a bit through my code and not found anything else obviously tampering with the ordering of that array.
Anything jump out as wrong?
Thanks,