I have data like this:
var dataset = [
{ "field1":"val1", "field2":"val2", "field3":"34.11" },
{ "field1":"val4", "field2":"val5", "field4":"2/3/2015" },
{ "field1":"val6", "field2":"val7", "field3": "26.37", "field4":"4/2/2015" }
] ;
As you see these data is missing "field3" in the second row and missing "field4" in the first row so how I can sort these data using javascript only ? if this wont work is it possible to loop through dataset to enter the missing fields in each row ? as I can not control the incoming data.
I was able to sort the dataset for strings and numbers but only if all rows are present for example this for string columns:
dataset.sort(function (a, b) {
var nameA = a.field1.toUpperCase(); // ignore upper and lowercase
var nameB = b.field1.toUpperCase(); // ignore upper and lowercase
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
return 0;
});
The desired output is HTML table but I know how to generate this table using Javascript so I just want to be able to sort each column separately asc or desc based on the column value type. for example sorting asc for field3 should be
var dataset = [
{ "field1":"val4", "field2":"val5", "field4":"2/3/2015" },
{ "field1":"val6", "field2":"val7", "field3": "26.37", "field4":"4/2/2015" },
{ "field1":"val1", "field2":"val2", "field3":"34.11" }
] ;
Update: My code trying to sort based on field3 but I get incorrect sort
dataset.sort(function (a, b) {
var nameA = Number(a.field3);
var nameB = Number(b.field3);
return (nameB - nameA);
});
See Question&Answers more detail:os