我试图从array创建新的array对象,根据其value设置等级。如果值相同,则设置相同的等级,如果下一个值不同,则跳过相同的等级长度来设置等级。
预期结果是
[ { “等级”:1 “数据”:45 }, { “等级”:2 “数据”:33 }, { “等级”:3, “数据”:8 }, { “等级”:4 “数据”:5 }, { “等级”:4 “数据”:5 }, { “等级”:6 “数据”:2 } ]
var data = [8,5,2,33,5,45];
var rankList = [];
var uniqueList = [];
var rank = 0;
var sameRank = 0;
data.sort(function(a,b) { return b - a; });
for(var i in data) {
if(uniqueList.includes(data[i])) {
rank++;
rankList.push({rank: sameRank, data: data[i]});
continue;
}
rank++;
sameRank++;
rankList.push({rank: rank, data: data[i]});
}
console.log(rankList);
答案 0 :(得分:2)
对数组进行排序后,请使用class CommentCreate(LoginRequiredMixin,CreateView):
def get_success_url(self):
return self.object.post.get_absolute_url()
创建另一个对象数组,并跟踪最后使用的.map
和rank
。如果新数据相同,则使用相同的等级(上一次迭代获得的等级)-否则,使用当前迭代索引加1:
data