Friday 12 January 2018

sorting - How to sort an array of objects with multiple field values in JavaScript

I found a great method to sort an array of objects based
on one of the properties as defined
at:




href="https://stackoverflow.com/questions/1129216/sorting-objects-in-an-array-by-a-field-value-in-javascript">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?

No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...