In reference to this posting; I can sort an Array of JSON Object by 2 fields.
And this posting also states:
“To add other columns to sort on, you can add other items in the array comparison.”
//THIS WORKS BUT NEEDS TO SORT BY ALL 5 FIELDS..
function sortRecords(a, b){
//note the minus before -cmp, for descending order
// field1 (Y or N), field2 (numeric), field3 (numeric),
// field4 (Y or N), field5 (Y or N)
return cmp(
[-cmp(a.field1, b.field1), cmp(a.field2, b.field2)],
[-cmp(b.field1, a.field1), cmp(b.field2, a.field2)]
);}
//THIS ONLY SORTS BY field1 and field2
function sortRecords(a, b){
//note the minus before -cmp, for descending order
// field1 (Y or N), field2 (numeric), field3 (numeric),
// field4 (Y or N), field5 (Y or N)
return cmp(
[-cmp(a.field1, b.field1), cmp(a.field2, b.field2), cmp(a.field3, b.field3)],
[-cmp(b.field1, a.field1), cmp(b.field2, a.field2), cmp(b.field3, a.field3)]
);}
function cmp(x,y){
return x > y ? 1 : x < y ? -1 : 0;
}
///implementation
data = $(data).sort(sortRecords);
What am I doing wrong here?
I have been using StackOverflow and I combined several examples of how to sort/order; and this function seems to give me what I am looking for…
given this array of JSON objects as [data].
BEFORE
{“name”:”JOE”,”field1″:”Y”,”field2″:3,”field3″:79,”field4″:”Y”,”field5″:”Y”}
{“name”:”BEN”,”field1″:”Y”,”field2″:15,”field3″:113,”field4″:”Y”,”field5″:”N”}
{“name”:”SUE”,”field1″:”Y”,”field2″:35,”field3″:395,”field4″:”Y”,”field5″:”Y”}
I can call sortRecords() to sort how I want.
AFTER
{“name”:”JOE”,”field1″:”Y”,”field2″:3,”field3″:79,”field4″:”Y”,”field5″:”Y”}
{“name”:”SUE”,”field1″:”Y”,”field2″:35,”field3″:395,”field4″:”Y”,”field5″:”Y”}
{“name”:”BEN”,”field1″:”Y”,”field2″:15,”field3″:113,”field4″:”Y”,”field5″:”N”}