我得到了错误的结果,我已经试运行了几次,但我不确定我在哪里落后。我首先对这个数组进行了排序,现在我想从这个数组创建一个数组,其中将包含位置属性。这将根据用户的积分确定用户位置。
var ranking_dayArr = [ { "key": "5K5NODEywoYj2wztGZQfkiZui0I2", "points_neg": -3 }, { "key": "bIluKNDpcuVvG2cIOILVNIm3wd03", "points_neg": -3 }, { "key": "ix7DniFJKsdEQ4oDvs0AQPMkTf82", "points_neg": -3 }, { "key": "b79GsKX9weN5lZOt0RWHoS6lP002", "points_neg":-3 }, { "key": "qnGZ7N5OLldg553fA5qVwQIMfa83", "points_neg": -3 }, { "key": "w4685dkjS4RAr6YFzVrV4gVrF603", "points_neg": -3 }, { "key": "wY1aixbDcTTimzLLPYsOsjD5GnO2", "points_neg": -3 }, { "key": "Ga71YJ861QVixQ0AugqfVfAcDqw1", "points_neg": -3 }, {"key": "gI9VIXQEqlUJWChZ20zS92FAtkl1", "points_neg": -3 }, { "key": "Uez7dbef9QciikxVtffEGg3ynYx2", "points_neg": -3 }, { "key": "SERnmqrduSejqSgDzvILJAZ0cKu1", "points_neg": 0 }, { "key": "SPSqJcCdKPhmDqv2QyB66ahLkrr2", "points_neg": 0 }, { "key": "rrKtq0KOCGeCIDAkWHBZUxsx5zF2","points_neg": 0 }, { "key": "4vaF6BVxoDeaKBsDqFb6yGnbhOi2", "points_neg": 0 } ];
var positions = [], position= 1;
for(var i = 0 ; i < ranking_dayArr.length ; i++){
// console.log(ranking_dayArr[i]);
// console.log(ranking_dayArr[i].key);
if(i === 0){
positions.push({
key:ranking_dayArr[i].key,
position : {position:position, position_neg:(position * -1)}
});
position = position + 1;
}else if(ranking_dayArr[i-1].points_neg === ranking_dayArr[i].points_neg){
positions.push({
key:ranking_dayArr[i].key,
position : {position:position, position_neg:(position * -1)}
});
}else{
positions.push({
key:ranking_dayArr[i].key,
position : {position:position, position_neg:(position * -1)}
})
position = position + 1;
}
}
console.log(ranking_dayArr);
console.log(positions);
请运行此代码并帮助我,我需要根据用户的积分添加位置,如果两个用户具有相同的积分,那么他们将具有相同的位置。
最佳答案
您的代码很好,您只需在第一个 if
条件内注释 position =position + 1;
即可。
var ranking_dayArr = [ { "key": "5K5NODEywoYj2wztGZQfkiZui0I2", "points_neg": -3 }, { "key": "bIluKNDpcuVvG2cIOILVNIm3wd03", "points_neg": -3 }, { "key": "ix7DniFJKsdEQ4oDvs0AQPMkTf82", "points_neg": -3 }, { "key": "b79GsKX9weN5lZOt0RWHoS6lP002", "points_neg":-3 }, { "key": "qnGZ7N5OLldg553fA5qVwQIMfa83", "points_neg": -3 }, { "key": "w4685dkjS4RAr6YFzVrV4gVrF603", "points_neg": -3 }, { "key": "wY1aixbDcTTimzLLPYsOsjD5GnO2", "points_neg": -3 }, { "key": "Ga71YJ861QVixQ0AugqfVfAcDqw1", "points_neg": -3 }, {"key": "gI9VIXQEqlUJWChZ20zS92FAtkl1", "points_neg": -3 }, { "key": "Uez7dbef9QciikxVtffEGg3ynYx2", "points_neg": -3 }, { "key": "SERnmqrduSejqSgDzvILJAZ0cKu1", "points_neg": 0 }, { "key": "SPSqJcCdKPhmDqv2QyB66ahLkrr2", "points_neg": 0 }, { "key": "rrKtq0KOCGeCIDAkWHBZUxsx5zF2","points_neg": 0 }, { "key": "4vaF6BVxoDeaKBsDqFb6yGnbhOi2", "points_neg": 0 } ];
var positions = [], position= 1;
for(var i = 0 ; i < ranking_dayArr.length ; i++){
// console.log(ranking_dayArr[i]);
// console.log(ranking_dayArr[i].key);
if(i === 0){
positions.push({
key:ranking_dayArr[i].key,
position : {position:position, position_neg:ranking_dayArr[i].points_neg}
});
//comment this line
//position = position + 1;
}else if(ranking_dayArr[i-1].points_neg === ranking_dayArr[i].points_neg){
positions.push({
key:ranking_dayArr[i].key,
position : {position:position, position_neg:ranking_dayArr[i].points_neg}
});
}else{
position = position + 1;
positions.push({
key:ranking_dayArr[i].key,
position : {position:position, position_neg:ranking_dayArr[i].points_neg}
});
}
}
console.log(ranking_dayArr);
console.log(positions);
关于javascript - 我有这个排序数组,我想根据点添加位置值。如果点相同位置将相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48358598/