[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;
}
Поздрави и успех утре на изпита,
Богомил