Skip to content

Instantly share code, notes, and snippets.

@mohandere
Last active December 20, 2018 13:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mohandere/ca6a38505056cca063f7e11b1ba11703 to your computer and use it in GitHub Desktop.
Save mohandere/ca6a38505056cca063f7e11b1ba11703 to your computer and use it in GitHub Desktop.
Sort plain js object based on custom order from Array
// Example -
// { category: 'Cloths', 'brand': 'Van H', collection: 'New' }.sortObject(['brand', 'category', 'collection']);
var sortingBasedOnArr = ['collection', 'brand', 'category'];
var targetObject = { category: 'Cloths', 'brand': 'Van H', collection: 'New' }
Object.prototype.sortObject = function(sortingArr) {
var targetObj = this;
var result = {}
if (!targetObj) {
return result;
}
sortingArr = sortingArr || []
var sortedKeys = Object.keys(targetObj).sort(function(a, b) {
return sortingArr.indexOf(a) - sortingArr.indexOf(b);
});
sortedKeys.forEach(function(key) {
result[key] = targetObj[key];
})
return result;
};
// To call
var sorted = Object.prototype.sortObject.call(targetObject, sortingBasedOnArr);
// Method - 2
// Sort based on custom order
var sortedKeys = Object.keys(targetObject).sort(function(a, b) {
return sortingBasedOnArr.indexOf(a) - sortingBasedOnArr.indexOf(b);
});
// Loop over keys
sortedKeys.forEach(function(key) {
var value = targetObject[key];
// Perform operations
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment