Classificar por chaves em JS

Para classificar por chaves, primeiro você deve coletar as chaves em um array, então classificar o array e, finalmente, criar um novo objeto copiando os dados do original na ordem do array classificado. Bem, eu forneci uma função que também pode classificar as chaves não em ordem alfabética, mas em uma ordem especificada pelo usuário, semelhante a ORDER BY FIELD do MySQL.

var sortByKeys: function(arr, fields) {
var keys = [];
for (var key in arr) {
if (arr.hasOwnProperty(key)) {
keys
.push(key);
}
}

if (typeof fields !== 'undefined') {
keys
.sort(function(a, b){
return fields.indexOf(a) - fields.indexOf(b);
});
} else {
keys
.sort();
}

data
= {};
for (var i = 0, l = keys.length; i < l; i += 1) {
var key = keys[i];
data
[key] = arr[key];
}
return data;
}