I found a great method to sort an array of objects based on one of the properties as defined at:
Sort array of objects by string property value in JavaScript
Using that function works perfectly for a single sort (on all browsers), and even a sort within another sort EXCEPT using Google Chrome! Here is Ege Özcan's great sort routine for arrays of objects
function dynamicSort(property) {
return function (a,b) {
return (a[property] < b[property]) ? -1 : (a[property] > b[property]) ? 1 : 0;
}
}
Using an array named "Data" (of course, my array has many more object pairs)...
var Data = [{Category: "Business", Value: "ABC"},{Category:"Personal", Value:"XYZ"}];
I can get a proper sort where the order is listed as all the values within each category by doing this...
Data.sort(dynamicSort("Value"));
Data.sort(dynamicSort("Category"));
By first sorting on Value
, and then by Category
, my array puts all values in sorted order with all the Business-base values listed first and then all the Personal-based values. Perfect! Except in Chrome where the data is sorted properly by category, but the order of the values within each category seems rather random.
Does any one know of a better way to do a sort within a sort that would also work in Chrome?