Sorting JSON (by specific element) alphabetically

javascript, json, sorting

Solution

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);
})

Problem

I have some JSON that is formatted like: ``` places =[ { "city":"Los Angeles", "country":"USA", }, { "city":"Boston", "country":"USA", }, { "city":"Chicago", "country":"USA", }, ] ``` et cetera... I am trying to sort this alphabetically BY CITY and am having trouble doing so. I believe the root of my issue seems to be determining the order of the characters (versus numbers). I've tried a simple: ``` places.sort(function(a,b) { return(a.city) - (b.customInfo.city); }); ``` yet, this subtraction doesnt know what to do. Can someone help me out?

Original source