【问题标题】:sort objects array with item Score使用项目分数对对象数组进行排序
【发布时间】:2021-05-07 03:58:00
【问题描述】:

我要对数组进行排序

var highscores = [
{Username: "joba_gm11", Score: "20"},
{Username: "nika.jobava45", Score: "20"},
{Username: "trollgamer481", Score: "100"},
{Username: "Gimira", Score: "20"},
{Username: "dirtytank481", Score: "50"},
];

使用此代码:

for (var i = 0; i < highscores; i++) {
    for (var j = 0; j < highscores; j++) {
        if (highscores[i].Score < highscores[j].Score) {
            var temp = highscores[i];
            highscores[i] = highscores[j];
            highscores[j] = temp;
        }
    }
}

但它不起作用。 有什么想法吗?

【问题讨论】:

    标签: javascript arrays loops sorting object


    【解决方案1】:

    您可能需要先将分数转换为数字,然后再进行比较。将它们作为字符串进行比较会按字母顺序进行比较。

    【讨论】:

      【解决方案2】:

      您可以在javascript中使用+将字符串转换为数字。

      假设您正在尝试使用当前代码实现冒泡排序:

      const highscores  = [
          {
              "Username": "joba_gm11",
              "Score": "20"
          },
          {
              "Username": "nika.jobava45",
              "Score": "20"
          },
          {
              "Username": "trollgamer481",
              "Score": "100"
          },
          {
              "Username": "Gimira",
              "Score": "20"
          },
          {
              "Username": "dirtytank481",
              "Score": "50"
          }
      ];
      
      
      let sorted = false;
      while (!sorted) {
          sorted = true;
          for (let i = 1; i < highscores.length; i++) {
              if (+highscores[i - 1].Score > +highscores[i].Score) {
                  sorted = false;
                  let temp = highscores[i - 1];
                  highscores[i - 1] = highscores[i];
                  highscores[i] = temp;
              }
          }
      }
      
      console.log(highscores);

      如果允许您使用更高效的内置排序:

      const highscores  = [
          {
              "Username": "joba_gm11",
              "Score": "20"
          },
          {
              "Username": "nika.jobava45",
              "Score": "20"
          },
          {
              "Username": "trollgamer481",
              "Score": "100"
          },
          {
              "Username": "Gimira",
              "Score": "20"
          },
          {
              "Username": "dirtytank481",
              "Score": "50"
          }
      ];
      
      highscores.sort((a, b) => +a.Score - (+b.Score));
      
      console.log(highscores);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-11
        • 1970-01-01
        • 2015-10-19
        • 1970-01-01
        相关资源
        最近更新 更多