Javascript 我想根据属性键值对从对象返回的项目进行排序,然后为接口中的每个项目分配一个排名(1、2、3…等等)

Javascript 我想根据属性键值对从对象返回的项目进行排序,然后为接口中的每个项目分配一个排名(1、2、3…等等),javascript,arrays,object,properties,key,Javascript,Arrays,Object,Properties,Key,这里有一个基本问题。这是我的目标: {TestOne: 12, TestTwo: 6, TestThree: 4, TestFour: 2} 我使用for-in循环遍历它,获取属性并将其显示在我的UI中,如下所示: 测试一:12 测试二:6 测试三:4 测试四:2 我需要能够通过给每个项目一个数字排名(1,2,3,4…等等)来显示它们,然后通过该排名(对应于它们的实际顺序)来显示它们。换句话说,我的用户需要在屏幕上看到的是: 测试一:4 测试二:3 测试三:2 测试四:1 不是12,6

这里有一个基本问题。这是我的目标:

{TestOne: 12, TestTwo: 6, TestThree: 4, TestFour: 2}
我使用for-in循环遍历它,获取属性并将其显示在我的UI中,如下所示:

  • 测试一:12
  • 测试二:6
  • 测试三:4
  • 测试四:2
我需要能够通过给每个项目一个数字排名(1,2,3,4…等等)来显示它们,然后通过该排名(对应于它们的实际顺序)来显示它们。换句话说,我的用户需要在屏幕上看到的是:

  • 测试一:4
  • 测试二:3
  • 测试三:2
  • 测试四:1
不是12,6,4,2等等。这对我来说都是新的,但我一直在试图找出实现这一点的最佳方法,到目前为止还没有发现任何我理解的东西

这是我的密码。我觉得这应该很容易,但它是超级令人沮丧

 var rank = "";
    var title = objArrayTwo[i].Title;
    var summary ={};
    summary = groupBy(objArrayTwo);

    for (var prop in summary) {
        if (summary.hasOwnProperty(prop)) {
            if(title == `${prop}`){
                rank = `${summary[prop]}`;
            }   

        }
    }

    function groupBy(items){
        var result= {};
        var sum;                    
        $.each(items, function(index, item) {
        sum = result[item.RequestName] || 0;
        result[item.RequestName] = sum + parseInt(item.Rank);                     
        });
        return result;
    }
var obj={TestOne:12,TestTwo:6,TestThree:4,TestFour:2};
//对数组进行排序
var arr=对象条目(obj);
arr.sort((a,b)=>a[1]-b[1]);
//枚举数组,索引将是秩
var arr_,其秩=arr.map((数据,索引)=>[data[0],index+1])。反向()
arr_与_rank.forEach(x=>console.log(x[0]+”:“+x[1])对齐
var obj={TestOne:12,TestTwo:6,TestThree:4,TestFour:2};
//对数组进行排序
var arr=对象条目(obj);
arr.sort((a,b)=>a[1]-b[1]);
//枚举数组,索引将是秩
var arr_,其秩=arr.map((数据,索引)=>[data[0],index+1])。反向()
arr_与_rank.forEach(x=>console.log(x[0]+”:“+x[1])对齐ES5解决方案
var resultDataObject={
测试一:12,
测试二:6,,
测试三:4,
测试四:2
};
变量下降排序=函数(a,b){
返回resultDataObject[b]-resultDataObject[a]
};
var sortedResultKeys=Object.key(resultDataObject).sort(下降排序);
var resultWithRank=sortedResultKeys.map(函数(k,i){
返回{
标题:k,
分数:resultDataObject[k],
排名:i+1
};
})
console.log(resultWithRank)
ES5解决方案
var resultDataObject={
测试一:12,
测试二:6,,
测试三:4,
测试四:2
};
变量下降排序=函数(a,b){
返回resultDataObject[b]-resultDataObject[a]
};
var sortedResultKeys=Object.key(resultDataObject).sort(下降排序);
var resultWithRank=sortedResultKeys.map(函数(k,i){
返回{
标题:k,
分数:resultDataObject[k],
排名:i+1
};
})
console.log(resultwistrank)