Last active
January 13, 2021 12:21
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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; | |
} |
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;
}
};
// 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);
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
@farksid that didn't work perfectly. This seems to do it: