[Useful Info]Сортиране на ключовете на обект

Здравейте на всички,

По време на една от лекциите възникна въпросът "Как се сортира ключевете на обект (асоциативен масив)". В час написахме този код, който сортира обекта по азбучен ред или по ред на номерата. За да я използвате трябва да я извикате по съответния начин:

var person = {
    name: 'Pesho',
    age : 22
};

//sorts the object keys in ascending order by default
person = sortObj(person);

По този начин презаписва обекта person с нов обект със сортирани пропъртита по азбучен ред (по подразбиране). Ако искате да сортирате в намаляващ трябва да извикате по следния начин (със втори аргумент true):

//sorts the object's properties in descending order
person = sortobj(person, true);

Ето и кода на функцията:

function sortObj(obj, descending) {
    var newObj = {};

    Object.keys(obj).sort(function(a ,b) {
        if(isNaN(Number(a)) && isNaN(Number(b))) {
			if(!descending)
				return a.localeCompare(b);
			else
				return b.localeCompare(a);
        } else {
			if(!descending)
				return a - b;
			else
				return b - a;
        }
    }).forEach(function(key) {
        newObj[key] = obj[key];
    });

    return newObj;
}

 

Поздрави и успех утре на изпита,

Богомил