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?
One option might be to make your data look like this: var json = [{ "name": "user1", "id": 3 }, { "name": "user2", "id": 6 }, { "name": "user3", "id": 1 }]; Now you have an array of objects, and we can sort it. Show activity on this post.
The default type nlohmann::json uses a std::map to store JSON objects, and thus stores object keys sorted alphabetically.
Enter your JSON into the first text area, or drag and drop a file, after, select the sort method you're going to use, key value requires the key name (if not specified selects the first key), click the example button to get an idea on how it works. The result will automatically sort and display in the output text area.
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);
})
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With