Buradaki özel durum için en iyi yaklaşım, bence, önerilen bir ortak yaklaşımdır . Modern tarayıcılarda işe yarayan küçük bir iyileştirme:
Object.keys(aao).sort(function(a,b){return aao[b]-aao[a]});
Bu, kolayca uygulanabilir ve buradaki özel durumda harika çalışabilir, böylece şunları yapabilirsiniz:
let aoo={};
aao["sub2"]=1;
aao["sub0"]=-1;
aao["sub1"]=0;
aao["sub3"]=1;
aao["sub4"]=0;
let sk=Object.keys(aao).sort(function(a,b){return aao[b]-aao[a]});
for (let i=sk.length-1;i>=0;--i){
}
Bunun yanı sıra, burada daha geniş bir durumda bile sıralama için kullanabileceğiniz daha "genel" bir işlev sunuyorum ve bu, önerdiğim iyileştirmeyi Ben Blank (aynı zamanda dize değerlerini de sıralamak) ve PopeJohnPaulII'nin ( belirli bir nesne alanına / özelliğine göre sıralama) ve artan veya azalan bir sıra isteyip istemediğinize karar vermenizi sağlar, işte burada:
function sortedKeys(aao,comp="",intVal=false,desc=false){
let keys=Object.keys(aao);
if (comp!="") {
if (intVal) {
if (desc) return keys.sort(function(a,b){return aao[b][comp]-aao[a][comp]});
else return keys.sort(function(a,b){return aao[a][comp]-aao[a][comp]});
} else {
if (desc) return keys.sort(function(a,b){return aao[b][comp]<aao[a][comp]?1:aao[b][comp]>aao[a][comp]?-1:0});
else return keys.sort(function(a,b){return aao[a][comp]<aao[b][comp]?1:aao[a][comp]>aao[b][comp]?-1:0});
}
} else {
if (intVal) {
if (desc) return keys.sort(function(a,b){return aao[b]-aao[a]});
else return keys.sort(function(a,b){return aao[a]-aao[b]});
} else {
if (desc) return keys.sort(function(a,b){return aao[b]<aao[a]?1:aao[b]>aao[a]?-1:0});
else return keys.sort(function(a,b){return aao[a]<aao[b]?1:aao[a]>aao[b]?-1:0});
}
}
}
Aşağıdaki kod gibi bir şeyi deneyerek işlevleri test edebilirsiniz:
let items={};
items['Edward']=21;
items['Sharpe']=37;
items['And']=45;
items['The']=-12;
items['Magnetic']=13;
items['Zeros']=37;
console.log("1: "+sortedKeys(items));
console.log("2: "+sortedKeys(items,"",false,true));
console.log("3: "+sortedKeys(items,"",true,false));
console.log("4: "+sortedKeys(items,"",true,true));
items={};
items['k1']={name:'Edward',value:21};
items['k2']={name:'Sharpe',value:37};
items['k3']={name:'And',value:45};
items['k4']={name:'The',value:-12};
items['k5']={name:'Magnetic',value:13};
items['k6']={name:'Zeros',value:37};
console.log("1: "+sortedKeys(items,"name"));
console.log("2: "+sortedKeys(items,"name",false,true));
Daha önce de söylediğim gibi, bir şeyler yapmanız gerekiyorsa sıralı anahtarların üzerinden geçebilirsiniz.
let sk=sortedKeys(aoo);
for (let i=sk.length-1;i>=0;--i){
}
Son olarak, Object.keys ve Array.sort için bazı yararlı referanslar