javascript - 我有这个排序数组,我想根据点添加位置值。如果点相同位置将相同

标签 javascript arrays sorting logic

我得到了错误的结果,我已经试运行了几次,但我不确定我在哪里落后。我首先对这个数组进行了排序,现在我想从这个数组创建一个数组,其中将包含位置属性。这将根据用户的积分确定用户位置。

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/

相关文章:

javascript - 如何更改每个点的圆弧中使用的描边样式?

arrays - swift 2 : Extra argument in call for array and struct

python - 在python中对直方图中的值进行排序并绘制它们

c - 快速排序错误。无法修复错误

mongodb - 按字符串枚举值对 mongo 结果进行排序

javascript - 将具有特殊值的 JSON 对象作为字符串加载

javascript - 用正则表达式在 Javascript 中用链接替换用户名

javascript - 使用解析服务器和 Heroku 调度程序的后台作业

c++ - 可以单独声明函数数组的元素吗?

php - 如何将二维数组放入php中的mysql_query