Skip to content Skip to sidebar Skip to footer

Sorting JSON (by Specific Element) Alphabetically

I have some JSON that is formatted like: places =[ { 'city':'Los Angeles', 'country':'USA', }, { 'city':'Boston', 'country':'USA', },

Solution 1:

Unfortunately there is no generic "compare" function in JavaScript to return a suitable value for sort(). I'd write a compareStrings function that uses comparison operators and then use it in the sort function.

function compareStrings(a, b) {
  // Assuming you want case-insensitive comparison
  a = a.toLowerCase();
  b = b.toLowerCase();

  return (a < b) ? -1 : (a > b) ? 1 : 0;
}

places.sort(function(a, b) {
  return compareStrings(a.city, b.city);
})

Solution 2:

Matti's solution is correct, but you can write it more simply. You don't need the extra function call; you can put the logic directly in the sort callback.

For case-insensitive sorting:

places.sort( function( a, b ) {
    a = a.city.toLowerCase();
    b = b.city.toLowerCase();

    return a < b ? -1 : a > b ? 1 : 0;
});

For case-sensitive sorting:

places.sort( function( a, b ) {
    return a.city < b.city ? -1 : a.city > b.city ? 1 : 0;
});

Post a Comment for "Sorting JSON (by Specific Element) Alphabetically"