新手,有一个基本问题。这是我的目标:
{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};
// sort the array
var arr = Object.entries(obj);
arr.sort((a, b) => a[1] - b[1]);
// enumerate the array the index would be the rank
var arr_with_rank = arr.map((data, index) => [data[0], index+1]).reverse()
arr_with_rank.forEach(x => console.log(x[0] + ": " + x[1]));
关于javascript - 我想根据属性键值对从对象返回的项目进行排序,然后为界面中的每个项目分配排名(1,2,3...等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46248977/