Skip to content

Instantly share code, notes, and snippets.

@christierney402
Last active January 13, 2021 12:21
Show Gist options
  • Save christierney402/5550678 to your computer and use it in GitHub Desktop.
Save christierney402/5550678 to your computer and use it in GitHub Desktop.
JS: Sort a JavaScript object by key in alphabetical order case insensitive. Thanks to Arne Martin Aurlien and Ivan Krechetov for inspiration. #snippet
/**
* Sort JavaScript Object
* CF Webtools : Chris Tierney
* obj = object to sort
* order = 'asc' or 'desc'
*/
function sortObj( obj, order ) {
"use strict";
var key,
tempArry = [],
i,
tempObj = {};
for ( key in obj ) {
tempArry.push(key);
}
tempArry.sort(
function(a, b) {
return a.toLowerCase().localeCompare( b.toLowerCase() );
}
);
if( order === 'desc' ) {
for ( i = tempArry.length - 1; i >= 0; i-- ) {
tempObj[ tempArry[i] ] = obj[ tempArry[i] ];
}
} else {
for ( i = 0; i < tempArry.length; i++ ) {
tempObj[ tempArry[i] ] = obj[ tempArry[i] ];
}
}
return tempObj;
}
@janhesters
Copy link

janhesters commented Oct 17, 2018

This code sorts objects deeply and will also handle arrays:

const alphaSort = (object: any): object => {
  if (object !== null && typeof object === "object") {
    return Object.keys(object)
      .sort((a, b) => sortByAlphabet(a.toLowerCase(), b.toLowerCase()))
      .reduce((result: object, key: string) => {
        result[key] = object[key];
        if (Array.isArray(result[key])) {
          result[key] = result[key].map((obj: any) => alphaSort(obj));
        }
        return result;
      }, {});
  } else if (Array.isArray(object)) {
    return object.map(obj => alphaSort(obj));
  } else {
    return object;
  }
};

@maksof-kashif
Copy link

// function
sortArr(a, b) {
var textA = a.keyName.toUpperCase();
var textB = b.keyName.toUpperCase();
return (textA < textB) ? -1 : (textA > textB) ? 1 : 0;
}

// calling function (here array is your array item)

array.sort(this.sortArr);

@shwao
Copy link

shwao commented Jul 22, 2020

const sortObjKeysAlphabetically = (obj) => Object.fromEntries(Object.entries(obj).sort());

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment